ruby和shell之间的不同sudo环境变量

时间:2016-04-15 22:24:03

标签: ruby linux shell

我正在编写一个需要与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会话而没有任何配置更改。

1 个答案:

答案 0 :(得分:2)

默认情况下,sudo会重置您的环境变量。您或许可以使用sudo的--preserve-env(简称-E)来保护环境。您可以运行man sudo以了解有关sudo及其选项的更多信息。