Ubuntu 上 zsh 的系统范围环境变量

Ubuntu 上 zsh 的系统范围环境变量

我正在使用 Ubuntu 9.04

我正在尝试添加一些系统范围的环境变量,我希望它们对 bash 和 zsh(我的主 shell)都可见,我将它们添加到 /etc/profile,但不幸的是我在 zsh 中看不到它们

我发现 Ubuntu 有一个文件 /etc/environment,它仅用于环境变量(而不是一般脚本),但 zsh 不遵守该文件。

当我尝试手动获取 /etc/profile 时,我得到了以下输出(我猜它没有将其解析到最后)

$ source /etc/profile
/etc/profile:5: no matches found: /etc/profile.d/*.sh

答案1

手册页zsh(1)指出 zsh 读取/etc/zsh/zprofile。您可以简单地在那里添加一个命令来获取来源/etc/profile

答案2

正确的答案应该是使用/etc/environment如下方法:

MYVAR=myvalue

因为它与 shell 无关。在此处设置的环境变量适用于所有帐户的所有 shell(sh、bash、zsh 等)。参考这里(也适用于 Ubuntu 和其他发行版)。

如果您尝试过但没有成功,那么您可能忘记注销并重新登录以使它生效。至于/etc/zsh/zprofile,我的已经包含(默认情况下)一行,其来源为/etc/profile

emulate sh -c 'source /etc/profile'

相关内容