1.Linux系统支持3种环境变量的设置
- 临时环境变量:只对当前终端有效
- 用户环境变量:仅对当前登录用户有效
- 系统环境变量:对所有人有效
以gcc和java的环境变量举例
JAVA_HOME=/usr/local/java8
GCC8_HOME=/usr/local/gcc7
临时环境变量:只对当前终端有效
在当前终端中直接输入:
JAVA_HOME=/usr/local/java8
GCC8_HOME=/usr/local/gcc7
export PATH=$PATH:$JAVA_HOME/bin:$GCC8_HOME/bin
仅在当前终端有效
用户环境变量:仅对当前登录用户有效
终端执行: vim ~/.bashrc
在文件中添加:
JAVA_HOME=/usr/local/java8
GCC8_HOME=/usr/local/gcc7
export PATH=$PATH:$JAVA_HOME/bin:$GCC8_HOME/bin
终端执行:vim ~/.bashrc
生效,或注销重新登陆生效
系统环境变量:对所有人有效
终端执行:sudo vim /etc/profile
在文件中添加:
JAVA_HOME=/usr/local/java8
GCC8_HOME=/usr/local/gcc7
export PATH=$PATH:$JAVA_HOME/bin:$GCC8_HOME/bin
终端执行source /etc/profilec
生效,或注销重新登录有效
2.Shell命令查看设置的所有环境变量:
$PATH
echo $PATH
printenv PATH
3. Ubuntu 包含两种环境变量:系统,用户
用户环境变量可以存储在以下文件中:
~/.profile
~/.bash_profile 或者 ~./bash_login
~/.bashrc
推荐将环境变量保存在~/.profile中
因为无论是通过控制台还是图形界面启动程序时,都会自动执行该文件。而/.bashrc,/.bash_profile,~/.bash_login这些文件,当通过shell启动程序时,他们也会被加载。但当通过图形界面环境启动程序时,这些文件中的环境变量设置便不可用了
系统环境变量可存储在以下文件中:
/etc/environment
/etc/profile
/etc/bash.bashrc
/etc/profile.d
其中,
/etc/profile和etc/profile.d都是常用的设置环境变量的地方
etc/profile.d文件来源于/etc/profile,在该目录下的*.sh,即以sh为后缀的文件都会被加载
类似的,不推荐使用/etc/bash.bashrc,因为在图形界面环境下启动程序时,不会加载里面的环境变量设置
4. 环境变量中覆盖系统默认的版本
若系统中默认安装了gcc和java,且不易删除时,而且自己又安装了更高的版本,这时想让系统用自己安装的而非系统安装的。
若系统如下设置:$PATH在前,优先使用系统的
JAVA_HOME=/usr/local/java8
GCC8_HOME=/usr/local/gcc7
export PATH=$PATH:$JAVA_HOME/bin:$GCC8_HOME/bin
若将$PATH放在后面,这样优先使用自己安装的
export PATH=$JAVA_HOME/bin:$GCC8_HOME/bin:$PATH
因为系统在环境变量中查找目标文件时,找到第一个发现的位置就会停止搜索。
5.linux设置环境变量后可能出现以下几个问题
a. 在当前终端有效,重启终端或新打开终端失效
b. 在root用户下有效,普通用户无效
c. 所有用户,任意终端都有效,但电脑重启后失效
d. 环境变量设置明明正确无误,但是显示的是以前的版本,而非当前设置的
e. 环境变量设置错误,导致原有的环境变量失效
本文参考:
1.https://blog.csdn.net/Jason_YBK/article/details/109172825
2.https://help.ubuntu.com/community/EnvironmentVariables