发布于 2年前

Linux自定义$PATH环境变量

$PATH变量内容

使用echo命令查看$PATH变量的值:

$ echo $PATH
/home/xx/bin:/home/xx/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/java/jdk/bin:/usr/java/jdk/jre/bin

$PATH变量保存了一个路径列表,每个路径之间使用冒号(:)隔开。

shell搜索命令的顺序

在Linux Shell上输入ls命令:

$ls
file1.txt  fold  file2.txt

回车后ls命令就马上执行,显示出当前目录的文件,包括文件夹。

ls安装在什么位置,shell是怎么找到命令执行的呢?这个我们要先知道Shell搜索命令的顺序。

#which command

查找命令的安装位置,可以使用which命令,把需要查询位置的命令名,作为which的参数。 例如:

#which ls
alias ls='ls --color=auto'
       /usr/bin/ls

which命令输出的第一行,表示ls使用了alias命令设置了别名。第二行是ls命令所在的位置为/usr/bin/ls

Shell搜索命令顺序

<figure class="image"></figure>如上图Shell执行命令的顺序是:Alias,函数,内建命令,Hash Table和$PATH,如果按以上顺序和当前路径下都没有找到,就会报command not found。

自定义$PATH

从上面知道,$PATH可以用于搜索命令。这样我们就可以把自己编写的脚本的目录放到$PATH变量里,这样我们就可以在任何目录中直接使用脚本名执行命令。

命令行使用export添加路径到$PATH

使用export按以下格式添加自己的路径到$PATH变量中:

export PATH=$PATH:/path/to/directory

命令的$PATH表示引用变量之前的值,使用冒号(:)隔开,接着添加自己的路径。

示例:

# export PATH=$PATH:/home/xx/scripts

这个表示把/home/xx/scripts添加到$PATH中。

永久设置$PATH

但以上方式在系统重启后就会失效,如果要永久设置$PATH,需要把export PATH命令添加到~/.bashrc~/.bash_profile中。

打开~/.bashrc

$ sudo vim ~/.bashrc

在文件最后添加:

export PATH=$PATH:/path/to/directory

保存文件后,执行source

$ source ~/.bashrc

这样你就可以在任何目录直接使用脚本名执行命令了。

©2020 edoou.com   京ICP备16001874号-3