我需要您的帮助来理解 sudo 的这种行为。
sudo -s -- 'ls -l'
此命令有效,但 sudo 'ls -l'
抛出错误并提示
sudo: ls -l: command not find
我意识到它将引号内的整个字符串视为单个命令(包括空格),但我不明白的是它如何与 -s
标志一起正常工作,但在 -s
不存在时失败。
最佳答案
如果没有-s
,第一个参数是要执行的命令的名称。使用 -s
时,第一个参数是传递给用于执行该参数的任何 shell($SHELL
或您的系统 shell)的 -c
选项的字符串。
也就是说,假设 $SHELL
是 sh
,则以下内容是等效的:
sudo -s -- 'ls -l'
sudo -- sh -c 'ls -l'
关于linux - 带引号的 sudo 命令行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32764600/