为什么在Linux下,如果使用ping只需输入ping,而打开程序却需要./a.out才可以打开?

有一个叫PATH的环境变量了解一下,里面存放了搜索路径,因为你的a.out不在那些路径里面所以需要自己指明具体路径。

这里涉及到了一个环境变量的问题,想要直接打开a.out,你需要将a.out的目录添加到环境变量里面。

linux中有个环境变量PATH,告诉系统要去哪些目录查找可执行程序。

比如我的debian服务器的环境变量是这样的。

xstarwxb@nbdeb64:~/kmssvr$ echo $PATH

/home/xstarwxb/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

通过which命令可以查找到ping程序所在目录

xstarwxb@nbdeb64:~/kmssvr$ which ping

/bin/ping

然后如果你想运行/home/xstarwxb/demo/a.out程序,并且不想输入这么长的路径,或者进入这个目录后才执行。则需要做如下操作

xstarwxb@nbdeb64:~/kmssvr$ export PATH=$PATH:/home/xstarwxb/demo/

xstarwxb@nbdeb64:~/kmssvr$ echo $PATH

/home/xstarwxb/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/xstarwxb/demo/

xstarwxb@nbdeb64:~/kmssvr$ a.out

hello world

因为没有加入到环境变量PATH中,所以需要指定目录。

在linux系统,.表示当前目录,./xxx.sh 表示当前目录下的脚本文件

当输入一个未指定路径的命令时,系统并不必然在当前目录下查找一个命令

系统到哪里找你输入的命令呢?答案是PATH环境变量,如果这个环境变量里定义的所有路径里都找不到你的命令那就无法执行,哪怕该命令就在当前目录下

所以,要么将当前目录添加到环境变量PATH里,要么在输入命令时指定该命令的路径,比如当前目录就可以写作./xxx.sh

windows下是会把当前目录也作为命令搜索路径的

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注