在Linux终端下调用可执行文件时总要加上符号./的原因
原網址 :?http://blog.csdn.net/snakebite1985/article/details/1638453
剛接觸Shell時總感到很奇怪:如果當前的Shell工作目錄為/home/Victor/,且此目錄下有一個叫做myproc的可執行文件,那么簡單的在命令行中輸入myproc并回車并不能調用這個可執行文件,終端會提示Shell找不到這個命令。但如果在myproc前加上“./”,即輸入./myproc并回車,文件就會正確地被執行了。
原因是可執行文件所在的目錄沒有包含在環境變量PATH的值中。在這種情況下,用戶必須給出可執行文件的完整路徑名才能運行指定的可執行文件。在上面的情況中,圓點符號(.) 表示當前目錄。因此,如果我們在任何工作目錄下的命令行中輸入/home/Victor/myproc并回車,該文件同樣可以被執行。當然也可以修改/etc/profile或/etc/bashrc之類的環境配置文件,將文件所在的目錄添加到PATH中(保存修改之后還要注銷并重登錄,我用的是Fedora Core 5)。這樣只要在任何工作目錄下輸入myproc并回車,該文件也會被執行,就像我們常用的Shell命令一樣。
但為什么在Windows的command命令行下,不會有這種問題呢?這是因為在command命令行中輸入文件名并回車后,系統除了查找PATH中指定的目錄,還會查找當前目錄下的文件(至于先查找哪個目前還不清楚)。這樣如果當前工作目錄為C:/Victor/且該目錄下有一個可執行文件myproc.exe,那么只要輸入myproc并回車就可以執行這個文件了。
而仍讓我困惑的是,為什么Linux(或者Unix)發布了這么多個版本,卻仍不借鑒command命令行的方式,將查找當前目錄這一步也做進去呢?那樣不是很方便嗎?
總結
以上是生活随笔為你收集整理的在Linux终端下调用可执行文件时总要加上符号./的原因的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CreateThread和_begint
- 下一篇: 鸟哥linux基础篇学完到什么程度,学完