
許多 StackOverflow 答案表明這是因為cd
是內建函數,但是type cd
和type pwd
都返回“shell 內建函數”並且只sudo cd
返回“未找到命令”。
那麼,與「僅適用於程序」cd
的許多答案相反,是否將其作為特殊情況處理?sudo
答案1
pwd
既作為 shell 內建函數存在(這就是為什麼type pwd
返回它是 shell 內建函數)又單獨作為GNU 核心實用程式。您的系統正在使用的版本pwd
是GNU 核心實用程式版本。它是一個可執行文件,因此可以使用 sudo 來運行它;與它不同的cd
是 shell 內建指令。
您可以親自驗證這一點。
自己輸入這兩個命令並觀察結果。 (如果您的系統中有同一命令的多個版本,該which
命令將在您輸入時告訴您正在調用哪一個)
which pwd
which cd
當您執行命令時,shell 內建命令不會返回可執行檔案的資料夾路徑which
。以下是我的系統上這兩個命令的輸出範例:
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
使用它。