sudo 在 shell 中不起作用
sudo won't work in shell
我对以下命令有疑问
sudo -u ${USER} -H sh -c "bash ${START_SCRIPT}"
我可以排除 START_SCRIPT 的错误,因为
bash ${START_SCRIPT}
效果很好。
我想一定是 sudo 语法有问题,但我找不到答案。到处(例如 this link,Kimvais 或 sudo 联机帮助页的回答)建议我在上面使用的格式。
USER=some_user
START_SCRIPT=/some/long/path/start.sh
我只能猜测它与长路径有关,或者我错过了 sudo 命令的任何参数。
在 this thread 我读到:
sudo -H -u otheruser bash -c 'echo "I am $USER, with uid $UID"'
这很完美,但都不是
sudo -H -u otheruser bash -c '${START_SCRIPT}'
也不
sudo -H -u otheruser -c 'bash "${START_SCRIPT}"'
有效。
任何人都可以帮助我或者至少给个提示吗?
中的单引号
sudo -H -u otheruser bash -c '${START_SCRIPT}'
防止 shell 扩展 $
。只需使用双引号:
sudo -H -u otheruser bash -c "${START_SCRIPT}"
我对以下命令有疑问
sudo -u ${USER} -H sh -c "bash ${START_SCRIPT}"
我可以排除 START_SCRIPT 的错误,因为
bash ${START_SCRIPT}
效果很好。
我想一定是 sudo 语法有问题,但我找不到答案。到处(例如 this link,Kimvais 或 sudo 联机帮助页的回答)建议我在上面使用的格式。
USER=some_user
START_SCRIPT=/some/long/path/start.sh
我只能猜测它与长路径有关,或者我错过了 sudo 命令的任何参数。
在 this thread 我读到:
sudo -H -u otheruser bash -c 'echo "I am $USER, with uid $UID"'
这很完美,但都不是
sudo -H -u otheruser bash -c '${START_SCRIPT}'
也不
sudo -H -u otheruser -c 'bash "${START_SCRIPT}"'
有效。
任何人都可以帮助我或者至少给个提示吗?
sudo -H -u otheruser bash -c '${START_SCRIPT}'
防止 shell 扩展 $
。只需使用双引号:
sudo -H -u otheruser bash -c "${START_SCRIPT}"