為什麼我需要 ./ 才能在 Mountain Lion 上執行指令?

為什麼我需要 ./ 才能在 Mountain Lion 上執行指令?

可能的重複:
給出路徑時「/」、「./」、「../」代表什麼?

為什麼需要./命令才能在 Mountain Lion 上運作?

例如,當使用 mysql 時,我必須在終端機中輸入:

./mysql -u itsme -p

另外,我正在創建命令列應用程式並使我的文件可執行,並且我必須使用 運行命令./,如下所示...

./myawesomeapp dothis

我知道./意味著當前目錄,但是如何在不使用它的情況下運行命令?

答案1

如果將包含二進位檔案的目錄放入PATH環境變數中,則可以在不提供路徑(即./)的情況下呼叫它們

我猜你可能正在使用 bash 作為你的 shell(你可以透過運行來檢查echo $SHELL)。如果是這種情況,請將以下內容新增至您的.bashrc

export PATH=$PATH:/whatever/path/you/want/to/add

答案2

您必須將可執行檔安裝在環境變數中列出的目錄之一中$PATH

echo $PATH
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin

$PATH透過修改文件進行調整~/.profile

export PATH=$PATH:/Users/me/bin

可以./透過添加.to來放棄always $PATH,但這可能是一個安全問題——如果不是在您的個人電腦上,那麼當您在操作伺服器時延續這個壞習慣時。

答案3

雖然可以添加.到 $PATH 變量,但強烈建議不要這樣做。如果您走到檔案系統中的某個隨機位置並鍵入您認為將執行程式的內容(viemacslsps等),則本機目錄中的檔案將成為要執行的候選檔案。如果你運氣不好,那根本不是你想要運行的程式 - 如果你運行為root,情況會更糟,因為有人很可能添加一個本地文件ls,它的功能與真實的完全不同ls(同時執行真正的 ls、當然- 否則很明顯這不是真正的ls,並且用戶將開始調查情況)。 [1]

相反,您應該添加可執行文件所在位置的絕對路徑,例如/projects/mycurrentprojects/bin- 或“相對於主目錄”,例如~/bin- 如果您希望該路徑在所有情況下都有效,最好使用home\mats\bin[顯然為自己使用正確的用戶名] 。這樣,只有特定目錄集中的檔案才適用,並且無論您身在何處,都只會選擇這些特定目錄中的程式作為「可能運行的候選程式」。

[1] 是的,我意識到搜尋順序和各種其他因素在這裡也很重要。但無論有什麼反對意見,添加“當前目錄”通常都不是一個好主意。

相關內容