次のbashスクリプトがあります。
#!/bin/bash
cd /home/user/projekt
git config core.sparseCheckout true
git pull origin master
wait
rm -rf /var/www/project/{client,public}
cp -r /home/user/project-checkout/project/dist/* /var/www/project/
cd /var/www/project/
npm install
高い特権でcopy
コマンドを実行する必要npm install
があるためsudo
。
しかし、 - ユーザーとファイルgit pull
から読み取るため、sudoのように動作しません。タスクを実行すると、ITは期待どおりに「正しいアクセス権があることを確認してください」と表示します。.gitconfig
.sshconfig
git sudo
それを処理する方法?台本賞ではクレジットを認められれば昇進権を奪われるかもしれないか?
ボーナスとして、3行が正常に完了した後にのみスクリプトを実行し続けるにはどうすればよいですか?
答え1
必要に応じて高さを下げることができ、sudo
スクリプトでは下げることはできません。
...
sudo cp ...
cd /var/www/project
sudo npm install
あなたはそれを使用することができます
set -e
wait
スクリプトの起動を引き起こすエラーが原因でスクリプトが停止し、3行目で望ましい効果があります。しかし、なぜそこにあるべきかはよくわかりません。git pull
操作が完了した後にのみ返されます。
答え2
この点を見ると、これを行う方法はいくつかあります。同じ問題が発生したとき、最初の方法が最も効果的でした。協会
追加することもできます。セット-x実際のスクリプトを確認してください。