Answers:
我认为有关环境变量的社区Wiki页面将帮助您进行分类
为了增加sagarchalise的答案,我可以总结该链接建议作为设置的适当位置的内容。
/etc/environment
/etc/profile
或/etc/bash.bashrc
从页面:
/etc/environment
专门用于系统范围的环境变量设置。它不是脚本文件,而是由赋值表达式组成,每行一个。具体来说,此文件存储系统范围的语言环境和路径设置。
使用/etc/profile
是非常Unix-y的方式,但是在Ubuntu下其功能大大降低了。它仅存在于指向/etc/bash.bashrc
并从中收集条目/etc/profile.d
。
在我的系统上,profile.d中唯一有趣的条目是/etc/profile.d/bash_completion.sh
。
建议使用Ubuntu页面的早期版本~/.pam_environment
,但该页面当前建议如果该页面不起作用,则应使用
~/.profile
-这可能是放置环境变量分配的最佳文件,因为在启动过程桌面会话期间,DisplayManager会自动执行该文件,而从文本控制台登录时,它会由登录外壳程序自动执行。
~/.bash_profile
或~./bash_login
-如果存在其中之一,则bash会执行该命令,而不是将~/.profile
bash作为登录shell启动时执行。bash将喜欢~/.bash_profile
到 ~/.bash_login
。[...]默认情况下,这些文件不会影响图形会话。”
~/.bashrc
-“ ...可能是设置变量的最简单位置”。 /etc/environment
在何时阅读?它似乎不适用于cron,即使使用SHELL=/bin/bash
/etc/environment
喜欢JAVA_HOME="/opt/java"
和ANT_HOME="/opt/ant"
怎么做
你有:
/ etc / profile:Bourne shell(sh(1))和Bourne兼容shell(bash(1),ksh(1),ash(1)等)的系统范围.profile文件。
在Lucid和Maverick中运行
/etc/profile.d/*.sh
如果存在,并且用户的外壳为bash:
/etc/bash.bashrc
对于用户环境,存在一个特定于外壳的混乱数组,以及是否将其视为“登录外壳”。如果外壳是bash:
~/.bash_profile
The personal initialization file, executed for login shells
~/.bashrc
The individual per-interactive-shell startup file
对于sh / dash:
$HOME/.profile
对于zsh,我什至不打算尝试理解这一点。
如https://help.ubuntu.com/community/EnvironmentVariables上的建议:
应当影响所有用户的全局环境变量/etc/environment
。
用户特定的环境变量应在中设置~/.pam_environment
。
避免使用配置文件和rc文件在Ubuntu上设置环境变量。他们给我带来的头痛比他们值得的更多。
然而,说起来容易做起来难;)
您可能会遇到与我相同的配置差距。请参阅下面的加密主页解决方法。
~/.pam_environment
:PATH DEFAULT=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:${HOME}/bin
IDEA_JDK DEFAULT=${HOME}/Applications/jdk
为什么静态路径难看?${PATH}
不会为我工作。我多次对登录名进行修改以尝试解决该问题,因此我坚持使用默认值的丑陋静态副本:)
在Ubuntu Precise 12.04 Beta 2及更高版本中,如果使用的是加密的主目录,则需要进行修改/etc/pam.d/common-session
以使其加载~/.pam_environment
。该解决方案显然适用于早期版本,但我尚未对其进行测试。
这似乎是加密主目录的问题。我加了
所需的会话pam_env.so
在/etc/pam.d/common-session的末尾,现在〜/ .pam_environment被读取。在没有加密主目录(也为10.04)的另一个系统上,不需要解决。也许就我而言,系统在解密之前试图读取〜/ .pam_environment。
改编自我对超级用户的回答:https://superuser.com/a/408373/66856
${HOME}
也不起作用。中没有扩展.pam_environment
。
.pam_environment
,但HOME
通常不会这么早设置。如果该行显示为DEFAULT=${PATH}/Applications/jdk
,则您已经看到了其中PATH
插入的值。