Shell
關於執行 shell 腳本
假設我有一個 shell 腳本文件
foo.sh
。我可以
chmod + x foo.sh
將其更改為執行檔。在 Kernighan-Pike: Unix Programming Environment (UP) 中,他們表明在此輸入之後
foo
應該執行腳本。相反,在我的 Ubuntu 系統中,我需要輸入sh foo
或./foo
. 我猜這是由於早期不存在的外殼的某些功能(在編寫 UP 時)。如果有人能告訴我為什麼存在這種差異以及為什麼它很重要,我將不勝感激?
- 執行檔的名稱很重要。如果您的文件被命名
foo.sh
,那麼foo
除非有其他一些名為foo
. 與 Windows 不同,Unix 不做隱式文件擴展。- 如果以下工作:
./foo.sh
但這不會:
foo.sh
這意味著該文件在您的目前目錄中,而您的目前目錄不在您的 PATH 中。為了保護您,如果您沒有明確提供命令的路徑,shell 將僅在您的 PATH 中的文件中查找該命令。 3. 空間很重要。以下可能有效:
./foo.sh
但是,這(取自這個問題的第一個版本)肯定行不通:
./ foo.sh
./
和之間有一個空格foo.sh
,shell 會認為你想執行目前目錄foo.sh
作為參數。這將生成一條錯誤消息。