{eval=Array;=+count(Array);}

问答专栏Q & A COLUMN

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

lucaslucas 回答0 收藏1
问题描述:题主是Linux初学者(在校生)题主理解./的意思是当前目录,但是:据题主目前所理解的内容,gcc,nm,objdump,ping这些命令实际上都是一些在Linux的bin文件夹下放着的"小程序",通过系统环境变量从而在任意路径下调用但是为什么当我打开一个另一个"小程序" a.out(hello world程序)时,却需要./a.out而不是直接a.out?更加底层,更加具体的原因是什么?假设我写了一个ping小程序,放在/root文件夹下,那么我(root用户)能不能直接在/root路径下输入ping来使用它?还是说,如果我不配置其他某些东西的话,我只能使用./ping来调用这个程序? 多谢各位大佬!
收藏问题

6条回答

funnyZhang

funnyZhang

回答于2022-06-28 11:38

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

评论0 赞同0
  •  加载中...
Winer

Winer

回答于2022-06-28 11:38

这里涉及到了一个环境变量的问题,想要直接打开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


评论0 赞同0
  •  加载中...
wpw

wpw

回答于2022-06-28 11:38

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

评论0 赞同0
  •  加载中...
nicercode

nicercode

回答于2022-06-28 11:38

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

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

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

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


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

评论0 赞同0
  •  加载中...
genefy

genefy

回答于2022-06-28 11:38

建议先学习操作系统的基本操作和参数设置,再学习在该操作系统上搞开发,就如同一个婴儿,应该先学习站起来,掌握平衡,再学习直立行走和奔跑。

评论0 赞同0
  •  加载中...
lowett

lowett

回答于2022-06-28 11:38

这是因为Unix(Linux的原版)的设计初衷就是万物皆文件。

Linux或Unix的可执行程序不像Windows的程序要有特定的“.exe ”后缀和文件头,它们就是一个普通文件,只是属性中有可执行的属性。那对于你编写的程序,编译器缺省的输出名就是a.out,你要执行它就要输入a.out。你认为它执行的过程和结果没有问题后,就可以把它改成你想要的名字了,如ping之类。

至于打开程序要输入./a.out,这只是部分版本的Linux所用的权限限制机制造成的,此版本的系统想要明确执行人或父进程是谁,所以需要你在执行程序时要键入相对路径。

而Ping这类系统程序的本身级别就高,不需要指定路径就可以运行了。

评论0 赞同0
  •  加载中...

相关问题

最新活动

您已邀请0人回答 查看邀请

我的邀请列表

  • 擅长该话题
  • 回答过该话题
  • 我关注的人
向帮助了您的网友说句感谢的话吧!
付费偷看金额在0.1-10元之间
<