当我尝试使用其他用户执行命令时遇到问题。
如果我这样做
sudo su - user
direct
完美运行
现在如果我这样做
sudo su - user -c direct
我遇到这个错误
-bash: direct: command not found
有人知道发生了什么吗?感谢您的关注。
答案1
您实际上根本不需要su
命令(您sudo su - user
所做的就是使用sudo
跳转到root
具有完全权限,然后使用su
降级到名为 的帐户user
。您也可以直接使用 跳转到user
)sudo
。
以下其中一行将起作用,具体取决于/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
将加载配置文件启动文件,该文件可能设置PATH
为direct
命令。
当您使用 时-c
,direct
找不到该命令。
一种解决方案是指定二进制文件的完整路径:
sudo su - user -c /full/path/to/direct
要找到该路径,请使用command -v
或which
从 shell 中找到它:
sudo su - user
command -v direct