為什麼 'sudo bash && cd Desktop' 不 cd 到桌面資料夾?

為什麼 'sudo bash && cd Desktop' 不 cd 到桌面資料夾?

我有一個具有chmod 000權限的資料夾,裡面有很多不同的東西,我進入的方式是透過bash運行.sudosudo bash

為什麼我做不到&&?我想cd使用這樣的一個命令進入目錄:

sudo bash && cd desktop

當我運行這個時,我仍然在~預設目錄中。

我必須運行這個

sudo bash
cd desktop

另外,桌面不是資料夾,它是桌面的子資料夾,但這並不重要。無論如何都是一樣的。

答案1

之後的部分&&在目前 shell 中執行,它不是傳遞給bash您執行的某些參數sudo

您可能會想嘗試

sudo bash -c 'cd desktop'

但這不起作用,因為它bash在 後退出cd desktop

你可以試試:

sudo sh -c 'cd desktop && exec bash'

desktop它「有效」(即將您置於Bash shell 中 uid=0 的目錄中)。我寧願發出兩個單獨的命令,也不願發出一個命令。

答案2

它確實有效,只是不是你所期望的那樣。&&等待命令完成。如果此時的結果為true,則執行下一指令。因此,如果您輸入bash && cd desktop,您將首先看到一個 bash shell。如果您輸入exit,您將回到之前所在的 shell 中,並且然後該目錄將變更為桌面資料夾。

就我所描述的功能而言,sudo 無關緊要。您的 sudo 用例可能不是最佳實踐,您應該考慮其他解決方案。

相關內容