Linux下查看修改PATH

什么是PATH? Link to heading

要搞清什么是PATH,应该先搞清什么是环境变量?

在计算机中,如果需要运行一个软件,那么我们就要找到它所在的位置,但是每次运行程序时如果都要进入到相应目录,那么显然是很繁琐的。于是就有了环境变量,环境变量就是一个系统参数,里面记录了一些目录,运行软件的时候,相关的程序将会按照该目录寻找相关文件。

而在Linux中,系统会有一个默认的PATH环境变量,里面记录了系统级的相关命令目录,比如当我们输入lscdpwd等命令时,我们不需要指定它们所在的目录,因为包含这些命令的系统目录已经写入PATH参数,因而方便我们调用。

查看PATH Link to heading

在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 Link to heading

我们可以使用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