
我有一個簡單的非常小的網頁應用程序,並且希望透過一個非常簡單的部署腳本讓我的生活變得更輕鬆,該腳本執行以下操作:
- 從 git 拉取更新
- 運行作曲家
- 更改所有文件的所有者
該腳本基本上運行良好,如下所示:
#!/bin/bash
echo "Updating repository ...";
sudo git pull;
echo "Installing composer dependencies from lockfile ...";
composer install;
echo "Changing owner to www-data:www-data ...";
sudo chown -R www-data:www-data .;
echo "Deployment DONE!";
但是,正如您所看到的,我在此腳本中以 sudo 身份運行了兩個命令。即git pull
和chown
。
我的問題如下:我知道使用 sudo 運行命令時系統詢問我密碼的頻率有超時。問題是,即使我在超時之內,腳本總是要求輸入密碼第二sudo (chown) 指令。
有人可以請啟發我,為什麼會出現這種情況?
答案1
我真的不知道是什麼原因,但有解決方案:
if [[ $(id -u $(whoami)) != 0 ]]
then
sudo bash $( cd $(dirname $0) ; pwd -P )
# taken from http://stackoverflow.com/a/4774063/2797066
else
#rest of script
fi
答案2
為什麼不sudo
這樣運行腳本:
sudo bash /path/to/script.sh
其中script.sh
有以下內容但沒有sudo
:
#!/bin/bash
echo "Updating repository ...";
git pull;
echo "Installing composer dependencies from lockfile ...";
composer install;
echo "Changing owner to www-data:www-data ...";
chown -R www-data:www-data .;
echo "Deployment DONE!"
這樣腳本只會要求您輸入密碼 1 次。