sudo – 我不像预期的那样行事

为什么sudo -i命令没有在我的新的Ubuntu 12.04.1 LTS上设置TERM,PATH,HOME,SHELL,LOGNAME,USER和USERNAME,正如手册中所描述的那样 ?

 # sudo -u johnny -i echo $HOME && echo $USER /root root 

使用-H也不是设置$ HOME。 而我的用户确实存在与家庭:

 # cat /etc/passwd [..] johnny:x:1000:1000::/home/johnny:/bin/bash 

更新:为什么我有这个问题? 因为我正在尝试为多个独angular兽应用程序创build一个ubuntu新贵作业,所以我正在使用用户安装的RVM + Bundle:没有正确评估$ HOME,RVM找不到〜/ .rvm。

不是一个真正的答案,但你有没有试过这个:

 $ cat /home/foo/test.sh #!/bin/sh echo $USER echo $HOME $ chmod +x /home/foo/test.sh $ sudo -u johnny -i "/home/foo/test.sh" johnny /home/johnny 

当运行这个:

 $ sudo -u johnny -i echo $USER && echo $HOME root /root 

看起来您的$USER正在命令行中进行评估,而命令作为初始用户执行。

在你的例子中,variables( $HOME$USER ,…)在sudo命令执行之前被解释。

相反,这应该像你期望的那样工作:

 sudo -u johnny -i env | grep HOME