很多學習 Java 書籍的第一章常是介紹如何設定環境變數,但這也是許多人無法理解的步驟,到底「環境變數」是什麼呢?

Environment Variables

環境變數是於系統環境中,可以被呼叫讀取的一種變數,通常記錄了一些系統環境的設定值。

macOS、Linux 可以使用以下指令來查看目前的所有環境變數及其值:

$ env

Windows 可以使用:

> set

PATH 變數

不管是 macOS、Linux 還是 Windows,系統文字介面中的每個指令都是獨立的執行檔。當使用者送出指令時,作業系統便會呼叫該指令的執行檔來執行使用者輸入的工作。而作業系統尋找指令執行檔的路徑,便是依據其中一個環境變數:PATH

如果沒有把指令執行檔的路徑設定在 PATH 變數中的話,則執行該指令就必須有明確的位置:

  • 於執行檔所在的目錄底下執行指令
  • 輸入指令執行檔的完整路徑

macOS、Linux 可以使用以下指令來查看目前的 PATH 變數值:

$ echo $PATH

Windows 可以使用:

> echo %path%

小提示:macOS、Linux 對大小寫敏感,Windows 則是大小寫不敏感(不論大小寫皆視為相同)。

Scope

環境變數可再細分為系統環境變數及使用者環境變數:

  • 使用者環境變數:目前登入使用者的獨立設定
  • 系統環境變數:為整體系統的設定(所有的使用者都會套用這個設定)

系統環境變數的設定,會套用至每個使用者,而使用者環境變數則只影響個別使用者。

  • macOS、Linux 的使用者環境變數優先度大於系統變數(先載入系統 bash 設定檔,後載入使用者 bash 設定檔)
  • Windows 的系統環境變數優先度大於使用者環境變數(以「系統環境變數 + 使用者環境變數」型式讀入)

額外參考