linux - 带引号的 sudo 命令行为

标签 linux bash unix sudo

我需要您的帮助来理解 sudo 的这种行为。

sudo -s -- 'ls -l' 此命令有效,但 sudo 'ls -l' 抛出错误并提示 sudo: ls -l: command not find 我意识到它将引号内的整个字符串视为单个命令(包括空格),但我不明白的是它如何与 -s 标志一起正常工作,但在 -s 不存在时失败。

最佳答案

如果没有-s,第一个参数是要执行的命令的名称。使用 -s 时,第一个参数是传递给用于执行该参数的任何 shell($SHELL 或您的系统 shell)的 -c 选项的字符串。

也就是说,假设 $SHELLsh,则以下内容是等效的:

sudo -s -- 'ls -l'
sudo -- sh -c 'ls -l'

关于linux - 带引号的 sudo 命令行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32764600/

相关文章:

linux - ionic Cordova 构建

C - Linux - 自定义内核模块来迭代进程的子进程会破坏内核日志和计算机

c++ - shellcode 在单独运行时调用不同的系统调用

C 程序 strcmp 不工作

linux - 重命名多个目录匹配模式

Windows 10 在 Bash Ubuntu 中打开目录

bash - 计算 linux 中制表符的数量

linux,逗号分隔的单元格到行保留/聚合列

linux - 替换两个选项卡之间的文本 - sed

linux - 在单个命令中使用前缀重命名文件夹中的所有文件