我有一个简单的非常小的 Web 应用程序,并且希望通过一个非常简单的部署脚本使我的生活变得更轻松,该脚本执行以下操作:
- 从 git 拉取更新
- 运行 Composer
- 更改所有文件的所有者
该脚本基本运行正常,如下所示:
#!/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!"
这样,脚本只会要求您输入一次密码。