我正在编写一个需要使用 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 会重置我的环境变量,我是在问为什么当我运行 shell 命令/脚本(第一个命令)时它不会,但当我运行 ruby (第二个命令)来自同一个 shell session ,没有任何配置更改。
最佳答案
默认情况下,sudo 会重置您的环境变量。您可以使用 sudo 的 --preserve-env
(或简称为 -E
)来保护环境。您可以运行 man sudo
来了解有关 sudo 及其选项的更多信息。
关于ruby - ruby 和 shell 之间不同的 sudo 环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36657792/