我有使用 sudo 命令的 bash-script,但在中间我需要停止 sudo-influence 然后再恢复它。
使用伪代码的非常简单的版本
sudo apt-get install -y synaptic
sudo ...
// I need to suspend sudo here, otherwise the folder
// is created with root as the owner.
mkdir ~/mystuff
// then reinstate it here
sudo apt-get install -y ssllib
sudo 是否在开始运行 bash 脚本时立即请求密码 - 或者 - 它只在遇到第一个“sudo”行时询问?
如果是这样,那么我想我可以将所有非 sudo 的东西移到顶部。但是,问题是我必须等到遇到第一个“sudo”行才能输入密码。
sudo
为此提供了选项-u
,请参阅man sudo
:对于您的示例,这将是:
鉴于您当前的脚本,不,该
mkdir
命令不会与sudo
.sudo
不会神奇地开始影响它没有启动的命令。它也不会在运行之前神奇地询问密码。可能发生的情况是您可能已经使用
sudo
. 如果是这种情况,那么您可以检查这是否属实,并要求用户在没有以下情况下运行它sudo
:或者,切换到这些命令的实际用户:
您可能需要
sh -c
因为~
由运行脚本的 shell 扩展,并且根据sudo
设置,该 shell 可能认为主目录是 root 的。