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

成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

問答專欄Q & A COLUMN

為什么在Linux下,如果使用ping只需輸入ping,而打開程序卻需要./a.out才可以打開?

lucaslucas 回答0 收藏1
問題描述:題主是Linux初學(xué)者(在校生)題主理解./的意思是當(dāng)前目錄,但是:據(jù)題主目前所理解的內(nèi)容,gcc,nm,objdump,ping這些命令實(shí)際上都是一些在Linux的bin文件夾下放著的"小程序",通過系統(tǒng)環(huán)境變量從而在任意路徑下調(diào)用但是為什么當(dāng)我打開一個(gè)另一個(gè)"小程序" a.out(hello world程序)時(shí),卻需要./a.out而不是直接a.out?更加底層,更加具體的原因是什么?假設(shè)我寫了一個(gè)ping小程序,放在/root文件夾下,那么我(root用戶)能不能直接在/root路徑下輸入ping來使用它?還是說,如果我不配置其他某些東西的話,我只能使用./ping來調(diào)用這個(gè)程序? 多謝各位大佬!
收藏問題

6條回答

funnyZhang

funnyZhang

回答于2022-06-28 11:38

有一個(gè)叫PATH的環(huán)境變量了解一下,里面存放了搜索路徑,因?yàn)槟愕腶.out不在那些路徑里面所以需要自己指明具體路徑。

評(píng)論0 贊同0
  •  加載中...
Winer

Winer

回答于2022-06-28 11:38

這里涉及到了一個(gè)環(huán)境變量的問題,想要直接打開a.out,你需要將a.out的目錄添加到環(huán)境變量里面。

linux中有個(gè)環(huán)境變量PATH,告訴系統(tǒng)要去哪些目錄查找可執(zhí)行程序。

比如我的debian服務(wù)器的環(huán)境變量是這樣的。

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

然后如果你想運(yùn)行/home/xstarwxb/demo/a.out程序,并且不想輸入這么長的路徑,或者進(jìn)入這個(gè)目錄后才執(zhí)行。則需要做如下操作

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


評(píng)論0 贊同0
  •  加載中...
wpw

wpw

回答于2022-06-28 11:38

因?yàn)闆]有加入到環(huán)境變量PATH中,所以需要指定目錄。

評(píng)論0 贊同0
  •  加載中...
nicercode

nicercode

回答于2022-06-28 11:38

在linux系統(tǒng),.表示當(dāng)前目錄,./xxx.sh 表示當(dāng)前目錄下的腳本文件

當(dāng)輸入一個(gè)未指定路徑的命令時(shí),系統(tǒng)并不必然在當(dāng)前目錄下查找一個(gè)命令

系統(tǒng)到哪里找你輸入的命令呢?答案是PATH環(huán)境變量,如果這個(gè)環(huán)境變量里定義的所有路徑里都找不到你的命令那就無法執(zhí)行,哪怕該命令就在當(dāng)前目錄下

所以,要么將當(dāng)前目錄添加到環(huán)境變量PATH里,要么在輸入命令時(shí)指定該命令的路徑,比如當(dāng)前目錄就可以寫作./xxx.sh


windows下是會(huì)把當(dāng)前目錄也作為命令搜索路徑的

評(píng)論0 贊同0
  •  加載中...
genefy

genefy

回答于2022-06-28 11:38

建議先學(xué)習(xí)操作系統(tǒng)的基本操作和參數(shù)設(shè)置,再學(xué)習(xí)在該操作系統(tǒng)上搞開發(fā),就如同一個(gè)嬰兒,應(yīng)該先學(xué)習(xí)站起來,掌握平衡,再學(xué)習(xí)直立行走和奔跑。

評(píng)論0 贊同0
  •  加載中...
lowett

lowett

回答于2022-06-28 11:38

這是因?yàn)閁nix(Linux的原版)的設(shè)計(jì)初衷就是萬物皆文件。

Linux或Unix的可執(zhí)行程序不像Windows的程序要有特定的“.exe ”后綴和文件頭,它們就是一個(gè)普通文件,只是屬性中有可執(zhí)行的屬性。那對(duì)于你編寫的程序,編譯器缺省的輸出名就是a.out,你要執(zhí)行它就要輸入a.out。你認(rèn)為它執(zhí)行的過程和結(jié)果沒有問題后,就可以把它改成你想要的名字了,如ping之類。

至于打開程序要輸入./a.out,這只是部分版本的Linux所用的權(quán)限限制機(jī)制造成的,此版本的系統(tǒng)想要明確執(zhí)行人或父進(jìn)程是誰,所以需要你在執(zhí)行程序時(shí)要鍵入相對(duì)路徑。

而Ping這類系統(tǒng)程序的本身級(jí)別就高,不需要指定路徑就可以運(yùn)行了。

評(píng)論0 贊同0
  •  加載中...

最新活動(dòng)

您已邀請(qǐng)0人回答 查看邀請(qǐng)

我的邀請(qǐng)列表

  • 擅長該話題
  • 回答過該話題
  • 我關(guān)注的人
向幫助了您的網(wǎng)友說句感謝的話吧!
付費(fèi)偷看金額在0.1-10元之間
<