1. 什么是环境变量$PATH
我们使用which命令可以看到一个命令的绝对路径,和其是否有别名:
[root@localhost tmp]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
我们知道linux里的命令也是文件,那么我们将ls文件移动到别的目录,也是可以执行的:
[root@localhost tmp]# cp /usr/bin/ls /tmp/ls2
[root@localhost tmp]# /tmp/ls2
d ks-script-dtbtyspz ks-script-gzgyntm8 ls2
[root@localhost tmp]# ls2
-bash: ls2: 未找到命令
可是为什么我们用绝对路径可以执行,而直接使用ls2却不可以,给我们提示‘未找到命令’呢?这是因为ls2不在环境变量$PATH里。
注意:在Linux里,环境变量有很多,$PATH只是其中一个。 我们可以使用echo命令来输出它:
[root@localhost tmp]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
在$PATH目录下的命令就可以直接使用,不需要用绝对路径。
2. 修改环境变量$PATH
我们可以修改环境变量,让/tmp/目录下的命令也可以直接执行:
[root@localhost tmp]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/tmp/
[root@localhost tmp]# ls2
d ks-script-dtbtyspz ks-script-gzgyntm8 ls2
但是这种修改不是永久的,重新打开一个终端,新增的/tmp/环境变量就会消失。
我们可以修改/etc/profile文件。 执行:
vi /etc/profile
移动光标到最后一行,按i进入编辑模式,在结尾行加上PATH=$PATH:/tmp/。
if [ -n "${BASH_VERSION-}" ] ; then
if [ -f /etc/bashrc ] ; then
# Bash login shells run only /etc/profile
# Bash non-login shells run only /etc/bashrc
# Check for double sourcing is done in /etc/bashrc.
. /etc/bashrc
fi
fi
PATH=$PATH:/tmp/
编辑完后,按:wq保存、退出。 这个时候输出$PATH变量,并不会出现我们新加的/tmp目录:
[root@10 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
执行:
source /tmp/
然后再执行echo:
[root@10 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/tmp/
出现了,你可以把source理解成让/etc/profile脚本执行了一遍。 现在就可以直接使用ls2命令了:
[root@10 ~]# ls2
a.link anaconda-ks.cfg a.zip b b.zip pipe
© 版权声明
本站文章由不念博客原创,未经允许严禁转载!
THE END