Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量,而用户级的环境变量则是该用户使用系统时加载的环境变量,所以管理环境变量的文件也分为系统级和用户级的。
Linux 环境变量文件:
系统级:
1. /etc/environment: 是系统在登录时读取的第一个文件,该文件设置的是整个系统的环境,只要启动系统就会读取该文件,用于为所有进程设置环境变量。 系统使用此文件时并不是执行此文件中的命令,而是根据而是根据KEY=VALUE模式的代码,对KEY赋值以VALUE。
例如:
PATH环境变量的作用:当从终端输入命令的时候LINUX会去查找PATH里面记录的路径。比如在根目录/下可以输入命令ls, 在/usr目录下也可以输入ls,但其实ls这个命令根本不在这个两个目录下,事实上当你输入命令的时候LINUX会去/bin,/usr/bin,/sbin等目录下面去找你此时输入的命令。可以将自己编写的常用的程序放在一个路径中,然后将该路径添加到PATH变量中。
2. /etc/profile: 此文件是系统登录时执行的第二个文件。 为系统的每个用户设置环境信息,环境变量周期是永久性。
下面是我ubuntu系统中的该文件:(最后一部分的汉语注释是我自己添加的)
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
if [ "$PS1" ]; then
if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
# The file bash.bashrc already sets the default PS1.
# PS1='\h:\w\$ '
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else
if [ "`id -u`" -eq 0 ]; then
PS1='# '
else
PS1='$ '
fi
fi
fi
# The default umask is now handled by pam_umask.
# See pam_umask(8) and /etc/login.defs.
if [ -d /etc/profile.d ]; then #判断/etc/profile.d 是不是一个目录
for i in /etc/profile.d/*.sh; do #如果是一个目录,到该目录下,取出每一个shell程序
if [ -r $i ]; then #判断给shell程序是否可以执行
. $i #执行shell程序
fi
done
unset i
fi
查看环境变量:
- export 命令。
- 单独查看环境变量,可用:echo $变量名
添加环境变量:
1. 用export指令临时添加环境变量:
例如,export PATH=/opt/STM/bin:$PATH
仅仅对当前的Terminal有效,在当前终端关闭后就会失效。
2.永久添加环境变量(影响所有用户)
编辑 /etc/profile在文档最后,添加:
export PATH="/opt/STM/bin:$PATH" //相当与在当前的PATH值前添加一个新路径
保存,退出,然后运行:
#source /etc/profile (source 命令可以强行让一个脚本去立即影响当前的环境)不报错则成功。
Ref:
https://www.cnblogs.com/aaronLinux/p/5837702.html