Linux下的路径问题
环境配置,是大家学习Linux的一大难关,特别是其中的各种路径配置,更是让人头大。
今天我们就简单聊一聊,PATH两三事。
1、首先什么是路径?
PATH,计算机系统里的路径是针对文件来说的。
有绝对路径与相对路径之分:
- 绝对路径,一定由根目录/写起;
- 相对路径,不是由/写起;
2、路径变量$PATH
大家有没有想过,为什么我们可以在Linux的任何目录下执行各种命令?
这正是因为环境变量PATH的帮助下所致的。
大家可以登陆自己的Linux系统,输入echo $PATH,注意这里的PATH是大写。
[iron2222@localhost ~]$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/iron2222/bin
注:每个路径中间会用:隔开,他们之间有顺序的区别。
当你输入命令时,系统就会根据这些路径来寻找对应的可执行文件,先找到谁就用谁。
3、如何对路径变量进行修改呢?
特别是配置交叉编译工具链的时候,当时可是让我一阵迷茫:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin:/home/book/100ask_imx6ull-sdk/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin
比如说,我新下载了一个好玩的命令,可以生成很多的有趣的东西,但不知道为什么命令输进去没有任何反应。
这个时候很有可能就是你的路径没有配置好。
扫描二维码关注公众号,回复:
14244065 查看本文章

举个例子,现在咱们动手把咱们最常用的ls命令的路径给它取消了,看看会怎么样。
[iron2222@localhost ~]$ su - root
Password:
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# mv /bin/ls /root
[root@localhost ~]# ls
-bash: ls: command not found
你会发现这个时候,不管你在哪一个目录下,都没办法执行ls命令。
因为/root这个目录并不在PATH指定的目录下,所以就选你在/root目录下,也不可能查得到ls这个命令。
如果你想让root在任何目录下都可以执行ls,那就将/root加入到PATH中即可。
[root@localhost ~]# PATH="${PATH}:/root"
你可以进行检查:
[root@localhost ~]# PATH="${PATH}:/root"
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root
发现/root已经存在了。
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root
[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog ls
这个时候,命令ls也可以使用了。
做完这个实验,千万别忘了,再把ls命令移回去!!!
[root@localhost ~]# mv /root/ls /bin
这个时候,你会忽然发现,为啥ls我都移回去了,咋不能用了。
[root@localhost ~]# ls
-bash: /root/ls: No such file or directory
[root@localhost ~]# ls
-bash: /root/ls: No such file or directory
不要紧张,只要注销exit再登陆就行了。
[root@localhost ~]# exit
logout
[iron2222@localhost ~]$ ls
Desktop Documents Downloads Music Pictures Public Templates Videos
[iron2222@localhost ~]$ su - root
Password:
[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog
[root@localhost ~]#
就到这里,祝大家早安、午安和晚安!