需要./
的執行檔與不需要它的執行檔有什麼區別?
以下有什麼區別
./executable
和executable
。為什麼有時某些執行檔(非 Linux 命令)不需要./
?如果我通過 makefile(物理程式碼)安裝了執行檔,我該如何刪除它並安裝更新版本?刪除
rm
程式碼是否足夠?在這種情況下,執行檔在沒有./
在 UNIX 環境中(甚至在 DOS、Windows 等其他系統中),shell 會在目錄中查找執行檔。在 Unix 環境中,它在
PATH
變數中定義。您可以看到PATH
執行以下命令的變數中的目錄:$ echo $PATH
結果將類似於:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
如您所見,該變數是由冒號分隔的目錄列表。當您執行命令時,例如
ls
,系統將在列表的第一個目錄中搜尋執行檔(在範例中為/usr/local/sbin
)。如果它沒有找到在ls
那裡命名的文件,它將嘗試下一個目錄,直到找到它。因此,如果您的ls
命令位於 上/usr/bin
,它將執行。或者,如果 shell 在任何地方都找不到命令,您將收到命令未找到錯誤。但是,還有其他方法可以呼叫執行檔。
ls
想像一下,您有兩個程序在 中的兩個目錄中命名PATH
,並且您想要執行第二個程序。這樣做的方式可能是執行/usr/bin/ls
,所以你指定你想要的。這
.
是目前目錄的快捷方式。因此,如果您在/home/user
,./configure
是/home/user/configure
.您可以
PATH
通過查找文件所在的位置並將其刪除來從中刪除文件。但是,您可能更喜歡通過包管理器來管理安裝到系統中的二進製文件,大多數現代發行版(如 rpm、dpkg、pacman 等)都提供該包管理器。如果 Makefile 創建了多個執行檔,那麼以這種方式刪除它們會更容易(此外,makefile 可能會創建一些庫文件和其他一些東西,這就是使用包管理工具更容易的原因)。有時 Makefile 可能會帶來一個解除安裝常式(即 make uninstall),但我不確定它發生的頻率。如果您通過新的 makefile 更新程序,新的make install
可能會替換舊的二進製文件,但不能保證這一點。您總是可以通過執行來找出某個命令的執行檔是什麼
which
。例如,如果您想知道在哪裡ls
:$ which ls /usr/bin/ls