您所在的位置: 首页 > 读书频道 > 操作系统 > Linux >

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

http://book.51cto.com  2007-09-27 09:58  鸟哥  人民邮电出版社  我要评论(0)

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】

回书目   上一节   下一节
Linux——从菜鸟到高手
操作系统密码恢复专题
Linux/Solaris服务器的安全配置
微软64位操作系统介绍
一起来升级到64位操作系统
 
 验证码: (点击刷新验证码)   匿名发表
  • Web应用软件性能测试指南

  • 作者:韩平/董启雄等译
  • 本书详细地介绍应用软件性能测试的相关知识。本书共分为8个部分:第一部分“性能测试简介”,包括3章,分别介绍Web应用软件性能..
Copyright©2005-2008 51CTO.COM 版权所有