为什么“sudo pwd”有效,但“sudo cd”无效?

为什么“sudo pwd”有效,但“sudo cd”无效?

许多 StackOverflow 答案表明这是因为cd是一个内置命令,但是type cdtype pwd都返回“shell 内置”并且只sudo cd返回“未找到命令”。

因此,与 SO 上的许多答案“仅适用于程序”cd相反,是否将其作为特殊情况处理?sudo

答案1

pwd既是 shell 内置命令(这就是为什么type pwd返回它是 shell 内置命令),又单独作为GNU 核心实用程序pwd。您的系统使用的版本是GNU 核心实用程序版本。它是一个可执行文件,因此可以使用 sudo 来运行它;与cdshell 内置命令不同。

你可以自己验证这一点。

自己输入这两个命令并观察结果。(如果您的系统中存在同一命令的多个版本,则该which命令将在输入时告诉您调用了哪一个版本)

which pwd

which cd

运行该which命令时,shell 内置命令不会返回可执行文件的文件夹路径。以下是我的系统上这两个命令的示例输出:

nate@linux:~> which pwd  
/usr/bin/pwd


nate@linux:~> which cd
which: no cd in (/home/nate/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:/usr/lib/mit/bin:/usr/lib/mit/sbin:/home/nate/Scripts:/home/nate/Scripts)

答案2

pwd某处有一个可执行文件(尝试whereis pwd)并sudo使用它。

相关内容