我在 macOS(15.2)上使用 sudo 保存环境变量时遇到了奇怪的行为:sudo -E
不保存环境变量PERL5LIB
。
复制步骤
在shell中设置环境变量:
export PERL5LIB=foo
。命令env | grep PERL5LIB
输出与预期一致:PERL5LIB=foo
。但是,命令
sudo -E env | grep PERL5LIB
不返回任何内容。相反,以下命令有效:sudo --preserve-env=PERL5LIB env | grep PERL5LIB
。它成功保留了PERL5LIB
。
这很令人困惑,因为我希望sudo -E
保留调用shell的所有环境变量,包括PERL5LIB
。但显然,对于这个特定的变量,它不是这样工作的。
问题
- 为什么在 macOS 上
PERL5LIB
没有保存?sudo -E
- 这种行为是特定的吗
PERL5LIB
,还是也会影响其他变量? - 在使用 sudo 时,有什么推荐的、可靠的方法来确保
PERL5LIB
保存?