1、什么是环境变量(PATH)
在Linux中,在执行命令时,系统会按照PATH的设置,去每个PATH定义的路径下搜索执行文件,先搜索到的文件先执行。
我们知道查阅文件属性的指令ls 完整文件名为:/bin/ls(这是绝对路径), 那你会不会觉得很奇怪:"为什么我可以在任何地方执行/bin/ls这个指令呢? " 为什么我在任何目录下输入 ls 就一定可以显示出一些讯息而不会说找不到该 /bin/ls 指令呢? 这是因为环境变量 PATH 的帮助所致呀!
当我们在执行一个指令癿时候,举例来说"ls"好了,系统会依照PATH的设定去每个PATH定义的目录下搜寻文件名为ls 的可执行文件, 如果在PATH定义的目录中含有多个文件名为ls 的可执行文件,那么先搜寻到癿同名指令先被执行!
2、如何改变PATH
a.直接修改$PATH值:
echo $PATH //查看当前PATH的配置路径
export PATH=$PATH:/xxx/xxx //将需配置路径加入$PATH 等号两边一定不能有空格
//配置完后可以通过第一句命令查看配置结果。
生效方法:立即生效
有效期限:临时改变,只能在当前的终端窗口中有效,当前窗口关闭后就会恢复原有的path配置
用户局限:仅对当前用户
b.通过修改.bashrc文件:(.bashrc文件在根目录下)
sudo gedit ~/.bashrc //编辑.bashrc文件
//在最后一行添上:
export PATH=$PATH:/xxx/xxx ///xxx/xxx位需要加入的环境变量地址 等号两边没空格
生效方法:(有以下两种)
…关闭当前终端窗口,重新打开一个新终端窗口就能生效
…输入“source ~/.bashrc
”命令,立即生效
有效期限:永久有效
用户局限:仅对当前用户
c.通过修改profile文件:(profile文件在/etc目录下)
sudo gedit /etc/profile //编辑profile文件
//在最后一行添上:
export PATH=$PATH:/xxx/xxx
生效方法:系统重启
有效期限:永久有效
用户局限:对所有用户
d.通过修改environment文件:(environment文件在/etc目录下)
sudo gedit /etc/profile //编辑profile文件
在PATH=/·········中加入“:/xxx/xxx”
生效方法:系统重启
有效期限:永久有效
用户局限:对所有用户
3.查看环境变量
查看环境变量有三个命令:
env
:env命令是environment的缩写,用于列出所有的环境变量;
export
:单独使用export命令也可以像env列出所有的环境变量,不过export命令还有其他额外的功能;
echo $PATH
: echo $PATH用于列出变量PATH的值,里面包含了已添加的目录。
4 设置方式
设置环境变量通常有两种方式。
4.1 把你的路径加入PATH
可以直接添加到环境变量PATH中。$PATH表示变量PATH的值,包含已有的目录。这种方法需要注意路径的顺序,如果遇到有同名的命令,那么PATH里面哪个目录先被查询,则那个目录下的命令就会被先执行,如下所示:
加到PATH末尾
export PATH=$PATH:/path/to/your/dir
加到PATH开头
export PATH=/path/to/your/dir:$PATH
4.2 命名一个新的环境变量
也可以直接命名一个新的环境变量,用于其它程序引用:
export VAR_NAME=value
5 作用域
环境变量的作用域通常有三个。
5.1 用于当前终端
打开一个终端,输入添加环境变量的语句:
export CLASS_PATH=./JAVA_HOME/lib:$JAVA_HOME/jre/lib
终端所添加的环境变量是临时的,只适用于当前终端,关闭当前终端或在另一个终端中,添加的环境变量无效。
5.2 用于当前用户
如果只需要添加的环境变量对当前用户有效,可以写入用户主目录下的.bashrc文件:
gedit ~/.bashrc
添加语句:
export CLASS_PATH=./JAVA_HOME/lib:$JAVA_HOME/jre/lib
注销或者重启可以使修改生效,如果要使添加的环境变量马上生效:
source ~/.bashrc
5.3 用于所有用户
要使环境变量对所有用户有效,可以修改profile文件:
sudo vim /etc/profile
添加语句:
export CLASS_PATH=./JAVA_HOME/lib:$JAVA_HOME/jre/lib
注销或者重启可以使修改生效,如果要使添加的环境变量马上生效:
source /etc/profile