您所在的位置:读书频道 > 操作系统 > Linux > 7.1.3 执行文件路径的变量:$PATH

7.1.3 执行文件路径的变量:$PATH

2007-09-27 09:58 鸟哥 人民邮电出版社 字号:T | T
一键收藏,随时查看,分享好友!

《鸟哥的Linux私房菜》一书全面而详细地介绍了Linux操作系统,第七章介绍的是Linux文件和目录管理,本节是执行文件路径的变量:$PATH。

AD:

7.1.3  执行文件路径的变量:$PATH

介绍了绝对路径、相对路径与命令的执行方式之后,你应该会注意到一件事情,那就是:“为什么可以在任何地方执行 /bin/ls命令呢?”为什么可以直接执行ls,就一定可以显示出一些信息,而不会说找不到 /bin/ls命令呢?这是因为有环境变量PATH的帮助。在执行命令时,系统会按照PATH的设置,去每个PATH定义的路径下搜索执行文件,先搜索到的命令先执行。现在,请输入命令echo $PATH,echo有“显示”的意思,而PATH前面加的 $ ,表示后面接的是变量,所以就会显示出当前的PATH了。

[root@linux ~]# echo $PATH
/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin

注意到了吗?/bin在PATH的设置中,所以自然就可以找到ls。PATH对于执行文件来说,是个很重要的“变量”,它主要是用来规范命令搜索的目录。每个目录是有顺序的,每个目录中间以冒号“:”来分隔,就如同上面范例中提到的。PATH这个变量还有什么作用呢?

• 如果将ls移动到 /root下面(mv /bin/ls /root),你也在 /root下(cd /root),但是,执行ls的时候,它就是不理你,怎么办?这是因为PATH变量没有 /root目录,而你又将ls移动到 /root下面了,系统自然就找不到可执行文件了,因此就会告诉你,command not found(命令未找到)。那么,该怎么解决这种问题呢?有两个方法,其一:直接将 /root的路径加入PATH中。如何增加?可以使用:

[root@linux ~]# PATH="$PATH":/root
这种方式来增加PATH搜索目录。另一种方式则是使用完整的文件名来发出命令,即直接使用相对或绝对路径来执行,例如:
[root@linux ~]# /root/ls
[root@linux ~]# ./ls

因为在同一个目录中,而我们又知道在同一个目录中的目录符号为“.”,因此,就以上面的 ./ls来执行也可以。这种执行方式很常见。

• 如果在不同的目录中有两个ls文件,例如 /usr/local/bin/ls与 /bin/ls。那么,使用ls的时候,会执行哪个ls?PATH里哪个目录先查询,则哪个目录下的文件就会先执行。
• 既然如此,为什么不在PATH里加入 . 目录,这样不就可以直接在所在目录执行文件了吗?因为 . 表示所在目录。没错。但是,有没有想过,如果某天,某个用户在 /tmp里写了一个ls文件,偏偏它是有害的文件,那么当你在 /tmp下面执行ls时,怎么办?可能会“中标”,所以,为了安全起见,建议不要将“.”加入PATH的搜索中。

关于更多PATH与相关“变量”及“环境变量”的概念,我们会在第3篇中更深入地介绍。经过上面的说明,你应该了解到:“为什么绝对路径发出命令的方法比相对路径要正确得多”这句话的意义。因为是直接找到该命令来执行,而不是通过PATH变量的内容去搜索。

【责任编辑:雪花 TEL:(010)68476606-8007】

回书目   上一节   下一节

分享到:

关于$PATH  路径  Linux  操作系统  shell  鸟哥  鸟哥的Linux私房菜的更多文章

  1. Linux服务器配置全程实录
  2. 揭秘--优秀PPT这样制作

热点职位

更多>>

热点专题

更多>>

读书

Windows编程启示录
主要内容: ● 如何设计像自动售货机那样有效的用户界面。 ● 深入理解窗口和对话框的管理机制。 ● 为什么性能优化与我们在

最新热帖

更多>>

51CTO旗下网站

领先的IT技术网站 51CTO 中国首个CIO网站 CIOage 中国首家数字医疗网站 HC3i 51CTO学院