我们可以在任何路径下面执行/bin/ls这个命令,也就是我们常用的ls -al,但是我们知道很多时候输入一个命令会显示说找不到这个命令的,为啥子ls这种一直都可以使用呢,这就是环境变量PATH的原因了
当我们输入一个命令,例如ls,系统会按照这个变量的定义目录下的可执行文件挨个查找,但是待会看到例子中的可执行文件就晓得了,会有很多,那如何是好呢·······先到先得即可
以root身份查看一下目前的路径
[root@localhost ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/root/perl5/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/mysql/bin:/root/bin
[root@localhost ~]# su - wangjie
上一次登录:日 6月 17 19:01:05 CST 2018:0 上
[wangjie@localhost ~]$ echo $PATH
/usr/lib64/qt-3.3/bin:/home/wangjie/perl5/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/local/mysql/bin:/home/wangjie/.local/bin:/home/wangjie/bin
查询文件是用‘:’冒号分割的,是有顺序之分的,切换到普通用户,会发现消失了sbin,这就是权限的设置方面,毕竟root才是真正的大佬
[root@localhost ~]# ls
anaconda-ks.cfg initial-setup-ks.cfg perl5 公共 模板 视频 图片 文档 下载 音乐 桌面
[root@localhost ~]# mv /bin/ls /root
[root@localhost ~]# ls
-bash: /usr/bin/ls: 没有那个文件或目录
[root@localhost ~]# /root/ls
anaconda-ks.cfg initial-setup-ks.cfg ls perl5 公共 模板 视频 图片 文档 下载 音乐 桌面
[root@localhost ~]# PATH="$PATH":/root
[root@localhost ~]# ls
anaconda-ks.cfg initial-setup-ks.cfg ls perl5 公共 模板 视频 图片 文档 下载 音乐 桌面
[root@localhost ~]# mv /root/ls /bin
[root@localhost ~]# ls
-bash: /root/ls: 没有那个文件或目录
[root@localhost ~]# PATH="$PATH":/bin
[root@localhost ~]# ls
anaconda-ks.cfg initial-setup-ks.cfg perl5 公共 模板 视频 图片 文档 下载 音乐 桌面
[root@localhost ~]#
简单来说,有这个路径,就可以查询到这个命令的执行文件,能找到这个执行文件,就可以执行命令,而如果我们通过‘mv /bin/ls /root’把/bin/ls移动为/root/ls,那可以使用吗,很明显我们是找不到这个执行文件了,因为路径里并没有设定,自然而然会报错,而此时我们只需要一个/root/ls就可以指定这个文件名,一样可以执行这个文件,当然这样感觉怪怪的·····
那么有没有又简单又永久的法子呢,当然有,既然是路径里没有/root,所以找不到这个执行文件,那我们把心得执行文件路径加进去就好了
PATH="$PATH":/root
此时就可以完成了,在任何目录下都可以执行这个文件了,因为心得/root已经被添加进了路径条目
当然有一点,添加的时候一定要用绝对路径,因为我们经常用cd切过来切过去的
还有这个例子改完了记得把/root/ls返回到/bin目录下,玩可以,玩崩就过了