我正在尝试使用screen
作为其他用户执行sudo
。
我正在使用命令:
echo 'userpassword' | /usr/bin/sudo -u 'myuser' -S '/usr/bin/screen -ls'
互联网上的任何帮助都表示sudo
会清除环境变量(例如PATH
)。所以我决定使用应用程序的完整路径,但我仍然没有找到命令错误。
错误:
sudo: /usr/bin/screen -ls: command not found
系统上安装了Sudo。 屏幕安装在系统上。
对于sudo
,我尝试了-E
和-H
标记,但没有帮助。
我尝试使用以下内容设置PATH
变量:
... | /usr/bin/sudo -u 'myuser' -S 'env PATH=$PATH; /usr/bin/screen -ls'
据说$PATH
假设在命令执行之前扩展但我得到了其他错误......
有人可以提供一个命令让我以另一个用户身份执行命令并解释命令的每个部分的作用,以便我能理解吗?
感谢。
答案 0 :(得分:6)
尝试,
export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:$PATH
在尝试设置新路径变量时,您可能已替换路径变量。
继续前进,不要回应$ PATH'在添加新路径变量之前。
答案 1 :(得分:0)
似乎没有必要将命令封装在引号中,没有它们甚至可以工作。
echo 'userpassword' | /usr/bin/sudo -u 'myuser' -S screen -ls