软件测试文件路径,执行文件路径的变量:PATH

.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变量的内容去搜索。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值