Make

需要./的執行檔與不需要它的執行檔有什麼區別?

  • July 12, 2020

以下有什麼區別

./executableexecutable。為什麼有時某些執行檔(非 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

引用自:https://unix.stackexchange.com/questions/598140