$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搜索命令顺序
如上图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
这样你就可以在任何目录直接使用脚本名执行命令了。