尝试使用 sudo su - user -- command 执行命令时出错

尝试使用 sudo su - user -- command 执行命令时出错

当我尝试使用其他用户执行命令时遇到问题。

如果我这样做

sudo su - user
direct

完美运行

现在如果我这样做

sudo su - user -c direct

我遇到这个错误

-bash: direct: command not found

有人知道发生了什么吗?感谢您的关注。

答案1

您实际上根本不需要su命令(您sudo su - user所做的就是使用sudo跳转到root具有完全权限,然后使用su降级到名为 的帐户user。您也可以直接使用 跳转到usersudo

以下其中一行将起作用,具体取决于/connect/ndm/bin已添加到$PATH。使用第一个有效的:

sudo -u user direct
sudo -iu user direct
sudo -Hiu user direct

第一种变体direct以用户身份运行user。第二种变体还告诉目标 shell 以“交互”模式运行,这意味着bash它将执行.bash_profile.profile,设置环境($PATH等等)。最终版本还强制$HOME为目标用户帐户设置变量。对于某些配置,这是自动完成的,sudo但我还是在这里包括了它“以防万一”。

答案2

sudo su - user将加载配置文件启动文件,该文件可能设置PATHdirect命令。

当您使用 时-cdirect找不到该命令。

一种解决方案是指定二进制文件的完整路径:

sudo su - user -c /full/path/to/direct

要找到该路径,请使用command -vwhich从 shell 中找到它:

sudo su - user
command -v direct

相关内容