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

比如说,我新下载了一个好玩的命令,可以生成很多的有趣的东西,但不知道为什么命令输进去没有任何反应。
在这里插入图片描述
这个时候很有可能就是你的路径没有配置好。

举个例子,现在咱们动手把咱们最常用的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 ~]# 

就到这里,祝大家早安、午安和晚安!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐