Shell

關於執行 shell 腳本

  • April 7, 2015

假設我有一個 shell 腳本文件foo.sh

我可以chmod + x foo.sh 將其更改為執行檔。

在 Kernighan-Pike: Unix Programming Environment (UP) 中,他們表明在此輸入之後foo應該執行腳本。相反,在我的 Ubuntu 系統中,我需要輸入sh foo./foo. 我猜這是由於早期不存在的外殼的某些功能(在編寫 UP 時)。如果有人能告訴我為什麼存在這種差異以及為什麼它很重要,我將不勝感激?

  1. 執行檔的名稱很重要。如果您的文件被命名foo.sh,那麼foo除非有其他一些名為foo. 與 Windows 不同,Unix 不做隱式文件擴展。
  2. 如果以下工作:
./foo.sh

但這不會:

foo.sh

這意味著該文件在您的目前目錄中,而您的目前目錄不在您的 PATH 中。為了保護您,如果您沒有明確提供命令的路徑,shell 將僅在您的 PATH 中的文件中查找該命令。 3. 空間很重要。以下可能有效:

./foo.sh

但是,這(取自這個問題的第一個版本)肯定行不通:

./ foo.sh

./和之間有一個空格foo.sh,shell 會認為你想執行目前目錄foo.sh作為參數。這將生成一條錯誤消息。

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