关于PATH环境变量的详细介绍
PATH环境变量的介绍
PATH是⼀个系统的环境变量,它⽤法很多⼈都了解,是指定命令的搜索路径。
本例⼦在Linux下讲解。
⽐如说,在/opt/games/csgo⽂件夹下有⼀个名为playcsgo的可执⾏⽂件,作⽤是启动游戏。
那么,假如你需要运⾏它,你必需要输⼊绝对路径,例如:
/opt/games/csgo/playcsgo
此时,不出问题的话,游戏已经开始了。
但是,路径是很繁长的,每次都要⽤绝对路径来运⾏,绝对是个⿇烦事。
此时PATH环境变量的作⽤就显现出来了,我希望实现输⼊playcsgo即可开始游戏,⽆需前边冗长的路径信息。
所以,此时只需要输⼊以下命令
# export命令的作⽤是设置环境变量的值
export PATH=/opt/games/csgo
先将PATH环境变量的值赋值为对应可执⾏⽂件所在的⽬录,后紧接着输⼊
playcsgo
此时就可以实现省略前边的路径部分了,因为你输⼊了⼀个命令,命令就是⼀个可执⾏程序,系统会⾃动在PATH所提供的路径中寻和你输⼊命令的名字⼀致的可执⾏⽂件,然后对应执⾏。
PATH环境变量的通常⽤法
其实系统中默认的PATH是有值的,在Linux下,通常包括/usr/bin,那么对Linux不那么熟悉的可以去看⼀下,平时⽤的⾮常频繁的命令,⽐如cd,mkdir,rm等,都可以在这个⽬录下到对应的可执⾏⽂件。
但是,值得注意的是,PATH中,允许放⼊多个路径,不仅PATH,其他环境变量也是这样。
在Linux操作系统下,不同的值以英⽂冒号":"分割,Windows下以英⽂分号";"分割。
例如:
当你输⼊了上边提到的export PATH=/opt/games/csgo命令后,你将⽆法使⽤cd,mkdir等这些命令了,因为你将PATH重新赋值后,其中不再包含/usr/bin,⽽这些常⽤命令通常就是在这个⽬录下,所以会报错显⽰没有到命令或可执⾏⽂件。
那么如何解决?
# 如上所说,两个路径以英⽂分号隔开
export PATH=/usr/bin:/opt/games/csgo
但是还是产⽣了⼀个问题,假如原来的PATH不⽌有/usr/bin呢,可能还包含其他路径,⽐如Java的JDK,此时如果这么做,其他的路径就会失效。
所以,下⾯这个⽅法,才是最最最正确的⽤法
# $PATH表⽰取的环境变量PATH的值
export PATH=$PATH:/opt/games/csgo
这⾥的意思是追加/opt/games/csgo到PATH原有值的末尾。
如图所⽰:
这时既不影响原有变量的值,还能放⼼的添加⾃⼰想要的路径。
有些问题需要注意⼀下
Q:假如PATH变量中,多个路径有相同名称的可执⾏⽂件,那么它要优先选择哪个?
A:优先选择路径位于PATH变量靠前的位置的,从上边图中可以看到,PATH变量的储存⽅式是⼀串字符串,其中以:隔开,这表⽰他们是有顺序之分的,系统会优先选择位置靠前的值。环境变量path误删有影响吗
Q:在终端中输⼊上述设置变量的命令,会⼀直有效吗?
A:不会,只在此刻此终端下有效,其他终端⽆效,并且当你关掉此终端时,你所设置的将丢失;在shell脚本中也是,只在脚本的运⾏范围内有效。
Q:如何设置长期有效的环境变量?
A:Windows下很容易,有变量的设置界⾯,Linux下可以在各种开机⾃启动脚本中写⼊设置命令。
Q:有些软件需要特定版本的JRE,我怎么让他们所使⽤的JAVA版本各不相同?
A:⾸先你必须准备所有所需要的版本的JRE,把他们放在不同的⽂件夹下,然后对每个程序编写运⾏脚本,shell脚本只在脚本的范围内有效,所以这种⽅式不会影响到其他程序。
脚本内容⽰例:
# 假定该程序所需JRE的路径为:/usr/jre8
export PATH=$PATH:/usr/jre8/bin #加bin是因为jre的可执⾏⽂件通常在安装⽬录的bin⽬录下
java playcsgo #这个命令是执⾏你想要⽤上边设置的jre运⾏的java程序。当然,如果⼤家有其他需要补充或者提问的,可以留⾔。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论