以其他用户的身份使用sudo运行cd时遇到问题


12

我想代表另一个用户在shell上运行命令。命令如下:

sudo -u USER cd /home/USER

我懂了

sudo: cd: command not found

该命令传递给sudo的正确语法是什么?

Answers:


14

cd是一个内置的shell。您需要调用shell来执行shell内置函数:

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

要么

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

1
这实际上并没有做任何有用的事情-外壳将在cd。之后立即退出。OP可能想要sudo -i
derobert

5

cd不是外部命令,它只是内置的shell,因此sudo无法执行。之所以cd只能作为内置的shell存在,是因为一个进程无法影响另一个进程的当前目录;因此,更改当前目录并立即退出的程序是没有用的。(几乎没有用:cd程序将返回指示其是否成功的状态。)

如果要更改目录,然后以其他用户身份运行命令,请运行执行所有操作的Shell。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.