linux环境变量可以哪些地方设置、区别


一、引入

使用ubuntu已经有两年多时间了。平时设置环境变量时,一会儿在/etc/profile下配置,一会儿在~/.bashrc设置。网上又有说在其它地方设置的。具体下来,有这么些地方。

  • /etc/profile
  • /etc/environment
  • ~/.bashrc
  • ~/.profile
  • ~/.

二、环境变量设置地方与区别

2.1 会话级别的环境变量

会话级别的环境变量(Session-wide environment variables),只会影响某个特定的用户,并不会影响所有用户。通常在~/.profile中或 ~/.pam_environment中设置。在设置之后,需要重新登陆系统生效。

  • ~/.pam_environment。不是一个脚本文件。在该文件中设置环境变量的例子。
FOO=bar
PATH DEFAULT=${PATH}:/home/@{PAM_USER}/MyPrograms
  • ~/.profile。是脚本文件。系统会在读取 ~/.pam_environment之后读取 ~/.profile,所以可以重写环境变量,覆盖它的值。在该文件中设置环境变量的例子。
export FOO=bar
export PATH="$PATH:$HOME/MyPrograms"

还可以在其他地方设置会话级别的环境变量。上面两种设置方式都是兼容的不同的linux系统。不同系统设置环境变量的地方可能有些不同。如ubuntu 的 ~/.bashrc, ~/.bash_profile, and ~/.bash_login,这些文件中设置的环境变量在bash shell中是合适的,然而在以图形方式打开的程序就不支持了。

2.2 系统级别的环境变量

系统级别的环境变量是影响整个系统的,而不是某个特定的用户。

  • /etc/environment。这个文件不是脚本文件,不能运行。在这个文件里面的配置方式是。
FOO=bar
  • /etc/profile.d目录。在这个目录下的.sh文件以你的目的命名。不过什么时候,bash shell登陆时(ssh或者console)都会执行。该方式的设置方式是创建/etc/profile.d/xx.sh,然后在里面进行设置。
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0
export PATH=$PATH:$JAVA_HOME/bin

其它设置系统环境变量的地方有/etc/profile。

三、总结

会话级别的环境变量在~/.profile中设置。
系统级别的环境变量在/etc/profile中设置。

~/.bashrc每次打开终端都会重新设置环境变量,没必要。并且./bashrc只会影响从命令行打开的程序。
~/.bash_profile。如果 ~/.bash_profile存在,那么读取的就是这个文件,而不是 ~/.profile文件。
~/.profile。能够被很多shell脚本认识。

ubuntu 文档中,对环境变量的描述 EnvironmentVariables

参考文献

Environment Variable seems to be set yet not working

扫描二维码关注公众号,回复: 9346922 查看本文章
发布了231 篇原创文章 · 获赞 93 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/wobushixiaobailian/article/details/98341240