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

国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

問答專欄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元之間
<