我想代表另一個使用者在 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