以另一个用户身份使用 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

相关内容