我想代表另一个用户在 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