我正在编写一个需要与sudo一起运行的脚本,并且遇到了一些好奇的东西,并想知道是否有人可以解释它......
我的环境变量似乎在ruby中与在shell中时的行为相同:
user@server:~$ sudo echo $HOME
/home/user
user@server:~$ sudo /opt/ruby-2.1.2-p95/bin/irb
irb(main):002:0> puts ENV['HOME']
/root
=> nil
irb(main):003:0>
这可能是什么原因?
编辑:澄清 - 我不是在问为什么sudo正在重置我的env变量,我问为什么它在运行shell命令/脚本(第一个命令)时没有,但是当我运行ruby时它会这样做(第二个命令)来自同一个shell会话而没有任何配置更改。
答案 0 :(得分:2)
默认情况下,sudo会重置您的环境变量。您或许可以使用sudo的--preserve-env
(简称-E
)来保护环境。您可以运行man sudo
以了解有关sudo及其选项的更多信息。