為什麼我們需要配置環境變數

RioTian發表於2020-08-26

之前學習 Java 的時候,感覺最難做的一件事情就是配置 jdk 的環境。那叫一個困難啊,Path, JAVA_HOME, CLASSPATH 印象深刻的很…(但是現在 JDK11 不用再配置 classpath 了,jre 和 jdk 合併了)
就在去年暑假,要配 OpenCV 的環境,要調的東西還是比較多的,對環境配置的概念又加深了。
現在懂的多了,配過的環境也多了,配過的平臺也不算少。現在就想分享一下 關於我對配環境這件事情的感受。

那就以 Windows 來說說環境配置的問題,Linux 下的其實差不多。

為什麼需要環境變數

我記得計算機網路的老師在給我們講 ip/mac 地址 的時候提過一個例子:

你剛到這個班,班裡都是新同學,你想找班裡的小明同學該怎麼辦?
答:在班裡喊一聲小明。這當然可以,小明肯定會響應你。對區域網來說也是如此。
但是,如果有一張座位表,上面有每個同學的座位資訊,你想找到某個人是不是就很簡單了。

環境變數也是如此,也很適合這個例子。
當使用者在 cmd 中執行一個命令的時候,命令列的直譯器就會去找你要執行的命令。
那麼是去哪裡找可執行的命令呢?兩個地方:

  • 當前路徑下的可執行檔案
  • 環境變數 Path 中儲存的路徑下的可執行檔案(包括系統變數和使用者變數)

舉個例子

舉個例子:
win + r 大家都用過吧,經常用來快速執行某些程式,比如開啟命令列視窗我們就會用到:
開啟 cmd

那電腦是怎麼知道 cmd 在哪兒的呢?
在Everything搜尋cmd.exe
能看到 cmd.exe 是在 C:\Windows\System32\C:\Windows\SysWOW64\ 這兩個路徑下都有的,那就是說,電腦是去這兩個路徑之一開啟的 cmd.exe,那我們來看一下,系統環境變數裡到底有沒有這兩個路徑的其中一個呢?

檢視一下系統的環境變數中的 Path 是不是有這個路徑:
在小娜的輸入框裡輸入 path 或者 環境 可以直接跳轉到修改環境變數的地方,不行的話只能在計算機圖示右鍵屬性了。
我的環境變數
可以驗證了吧~
所以這個流程我們也弄清楚了:

你在執行視窗輸入 cmd:
    -> 直譯器去尋找這個檔案:
        -> 先尋找當前路徑下是否有
        -> 再尋找環境變數中的Path儲存的路徑是否有
    -> 沒找到就報沒找到

所以如果你沒配置某個可執行檔案到 Path 裡,那你就得手動輸入該檔案的絕對路徑才能開啟了。
比如說 Java…

Path 外的其他欄位

其他的一些欄位也是方便我們使用的,想用的時候使用 %欄位名% 就能呼叫了。
比如說我在系統設定裡設定了 CMDER_ROOT 欄位,將其賦值為 D:\0ArtinD\cmder,這是一個路徑。
設定 CMDER_ROOT
然後我想開啟該路徑,就可以使用該欄位名啦:
Snipaste

簡單來說!就是程式設計中的變數名。定義一個常量,想用的時候可以使用。

使用者變數和系統變數

作業系統中有使用者的概念。
使用者變數只對當前登入的使用者生效。
系統變數對當前計算機的所有使用者生效。

相關文章