什么是PATH?
要搞清什么是PATH,应该先搞清什么是环境变量?
在计算机中,如果需要运行一个软件,那么我们就要找到它所在的位置,但是每次运行程序时如果都要进入到相应目录,那么显然是很繁琐的。于是就有了环境变量,环境变量就是一个系统参数,里面记录了一些目录,运行软件的时候,相关的程序将会按照该目录寻找相关文件。
而在Linux中,系统会有一个默认的PATH环境变量,里面记录了系统级的相关命令目录,比如当我们输入ls
、cd
、pwd
等命令时,我们不需要指定它们所在的目录,因为包含这些命令的系统目录已经写入PATH参数,因而方便我们调用。
查看PATH
在linux中,可以使用export
命令来查看所有环境变量,如下:
pi@raspi:~$ export
declare -x HOME="/home/pi"
declare -x LANG="en_GB.UTF-8"
declare -x LOGNAME="pi"
declare -x MAIL="/var/mail/pi"
declare -x OLDPWD
declare -x PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/home/pi/bin"
declare -x PWD="/home/pi"
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x SSH_CLIENT="101.135.216.146 28249 22"
declare -x SSH_CONNECTION="101.135.216.146 28249 192.168.1.111 22"
declare -x SSH_TTY="/dev/pts/1"
declare -x TERM="xterm"
declare -x USER="pi"
使用echo
来查看单独的环境变量
pi@raspi:~$ echo $PATH
/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/home/pi/bin
我们可以看到,以上PATH值包含了一些系统命令的目录,而这些目录都用:
隔开。
修改PATH
我们可以使用export
命令来添加目录,如下:
export PATH=/mydoc:$PATH
以上命令在原有的PATH前添加了/mydoc
这个目录,设置完成后的PATH值如下:
pi@raspi:~$ echo $PATH
/mydoc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/home/pi/bin
以上方法修改PATH值,在终端退出后就会失效,因此建议通过修改/etc/profile
来设定PATH
看一下/etc/profile
中到底有什么东西
pi@raspi:~$ cat /etc/profile
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
if [ "`id -u`" -eq 0 ]; then
PATH="/usr/local/sbin:/usr/local/usr/sbin:/usr/sbin:/bin"
else
PATH="/usr/local/sbin:/usr/local/usr/sbin:/usr/sbin:/bin:/usr/local/games:/usr/games"
fi
export PATH
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
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
export PATH=/usr/local/nginx/sbin:/usr/local/php:$PATH
看来/etc/profile
中默认将一部分系统目录都添加到了PATH中,而我们只需要更改最后一行,将一些自定义的目录添加到PATH即可。
通过编辑/etc/profile
来设定的PATH值会在下次进入系统时生效,如果需要当即生效,只需要执行以下命令即可:
source /etc/profile