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

之前學習 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

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

用戶變數和系統變數

作業系統中有用戶的概念。
用戶變數只對當前登錄的用戶生效。
系統變數對當前電腦的所有用戶生效。