Linux中的环境变量$PATH

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
喜欢就支持一下吧
点赞113赞赏 分享
评论 抢沙发
头像
欢迎光临不念博客,留下您的想法和建议,祝您有愉快的一天~
提交
头像

昵称

取消
昵称

    暂无评论内容