以另一個使用者身分使用 sudo 執行 cd 時出現問題

以另一個使用者身分使用 sudo 執行 cd 時出現問題

我想代表另一個使用者在 shell 上執行命令。命令如下:

sudo -u USER cd /home/USER

我明白了

sudo: cd: command not found

傳遞給 sudo 的命令的正確語法是什麼?

答案1

cd是一個外殼內置。您需要呼叫 shell 來執行 shell 內建指令:

sudo -u USER sh -c 'cd /home/USER'

或者

sudo -u USER bash -c 'cd /home/USER'

答案2

cd不是外部命令,它只是 shell 內建命令,因此sudo無法執行它。之所以cd只作為 shell 內建程式存在,是因為一個行程不能影響另一個行程的目前目錄;因此,更改當前目錄並立即退出的程序是沒有用的。 (幾乎沒用:cd程式會傳回一個狀態,表示它是否成功。)

如果您想變更到某個目錄,然後以另一個使用者身分執行命令,請執行執行所有這些操作的 shell。

sudo -u SOMEUSER sh -c 'cd /path/to/directory && dosomething'

答案3

我傾向於使用:sudo su - USERNAME然後按照該用戶的要求執行操作。要退出只需鍵入exit

相關內容