題 為什麼“sudo cd”不起作用?


為什麼打字 sudo cd什麼的 不會改變目錄?


74
2018-02-03 08:24


起源


看到 askubuntu.com/questions/291666/... - John


答案:


cd 是內置的shell。 sudo 僅適用於可執行文件。你可以做到 sudo sh -c 'cd dirname' 但是一旦shell退出,你就會返回到你開始的目錄。如果你說你想要完成的是什麼,那麼我可以幫助你找到一種方法來做到這一點。


49
2018-02-03 08:29



但是之後 sudo pwd 也行不通? (我總是這麼想的 sudo cd  不 工作,但你只是沒有看到結果 sudo 回報。但這只是一個瘋狂的猜測。也許不是 cd 也不 pwd 實際上是內置在Mac上的Bash中。運行 which cd  不 確實給我結果。運行 sudo cd / 不會給我一個錯誤,但確實不會導致更改工作目錄。) - Arjan
@Arjan: pwd 也是一個外部可執行文件,因此它可以工作。請注意,在某些系統上,有一個 cd 可執行文件,但它幾乎沒用。嘗試使用 type -a cd 它比信息更豐富 which, 順便說說。 - Dennis Williamson
太好了! type -a cd 顯示兩者 cd is a shell builtin 和 cd is /usr/bin/cd 在我的Mac上。同樣如此 pwd 和 echo。兩者都有 sudo pwd 和 sudo echo "Hello world" 給我一個結果。然而, type -a return 只收益率 return is a shell builtin,和 sudo return 3 告訴我 sudo: return: command not found。所以,我想問題是:OP是否收到錯誤消息,或OP是否看不到 cd 工作沒有任何錯誤? (或者:OP使用什麼操作系統。) - Arjan
sudo sh -c 'cd dirname' 對我沒有任何幫助。 - Peter Niederwieser
@Peter:看到我的答案部分開頭“但......” - Dennis Williamson


而是嘗試使用 sudo -s 啟動一個root shell,然後簡單地說 cd 進入目錄。
以root身份完成後,按 按Ctrld 或者輸入 exit


正如Arjan在下面的評論中暗示的那樣,重要的是要注意作為root,很容易對基本系統組件造成損害。 小心使用!


66
2018-02-03 08:56



但是:小心,一旦有根...... - Arjan


你可以簡單 su 成為根然後 cd 所有你想要的...我知道答案已被接受,但如果一個人不在sudoers名單上,那麼這是唯一的選擇。


7
2018-04-24 08:57



另一方面,如果沒有root密碼,或者你不知道它,sudo是唯一的選擇。 - Liam