许多 StackOverflow 答案表明这是因为cd
是一个内置命令,但是type cd
和type pwd
都返回“shell 内置”并且只sudo cd
返回“未找到命令”。
因此,与 SO 上的许多答案“仅适用于程序”cd
相反,是否将其作为特殊情况处理?sudo
答案1
pwd
既是 shell 内置命令(这就是为什么type pwd
返回它是 shell 内置命令),又单独作为GNU 核心实用程序pwd
。您的系统使用的版本是GNU 核心实用程序版本。它是一个可执行文件,因此可以使用 sudo 来运行它;与cd
shell 内置命令不同。
你可以自己验证这一点。
自己输入这两个命令并观察结果。(如果您的系统中存在同一命令的多个版本,则该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
使用它。