之前學習 Java 的時候,感覺最難做的一件事情就是配置 jdk 的環境。那叫一個困難啊,Path, JAVA_HOME, CLASSPATH 印象深刻的很…(但是現在 JDK11 不用再配置 classpath 了,jre 和 jdk 合併了)
就在去年暑假,要配 OpenCV 的環境,要調的東西還是比較多的,對環境配置的概念又加深了。
現在懂的多了,配過的環境也多了,配過的平臺也不算少。現在就想分享一下 關於我對配環境這件事情的感受。
那就以 Windows 來說說環境配置的問題,Linux 下的其實差不多。
為什麼需要環境變數
我記得計算機網路的老師在給我們講 ip/mac 地址 的時候提過一個例子:
你剛到這個班,班裡都是新同學,你想找班裡的小明同學該怎麼辦?
答:在班裡喊一聲小明。這當然可以,小明肯定會響應你。對區域網來說也是如此。
但是,如果有一張座位表,上面有每個同學的座位資訊,你想找到某個人是不是就很簡單了。
環境變數也是如此,也很適合這個例子。
當使用者在 cmd 中執行一個命令的時候,命令列的直譯器就會去找你要執行的命令。
那麼是去哪裡找可執行的命令呢?兩個地方:
- 當前路徑下的可執行檔案
- 環境變數 Path 中儲存的路徑下的可執行檔案(包括系統變數和使用者變數)
舉個例子
舉個例子:
win + r
大家都用過吧,經常用來快速執行某些程式,比如開啟命令列視窗我們就會用到:
那電腦是怎麼知道 cmd 在哪兒的呢?
能看到 cmd.exe
是在 C:\Windows\System32\
和 C:\Windows\SysWOW64\
這兩個路徑下都有的,那就是說,電腦是去這兩個路徑之一開啟的 cmd.exe
,那我們來看一下,系統環境變數裡到底有沒有這兩個路徑的其中一個呢?
檢視一下系統的環境變數中的 Path 是不是有這個路徑:
在小娜的輸入框裡輸入 path
或者 環境
可以直接跳轉到修改環境變數的地方,不行的話只能在計算機圖示右鍵屬性了。
可以驗證了吧~
所以這個流程我們也弄清楚了:
你在執行視窗輸入 cmd:
-> 直譯器去尋找這個檔案:
-> 先尋找當前路徑下是否有
-> 再尋找環境變數中的Path儲存的路徑是否有
-> 沒找到就報沒找到
所以如果你沒配置某個可執行檔案到 Path 裡,那你就得手動輸入該檔案的絕對路徑才能開啟了。
比如說 Java…
Path 外的其他欄位
其他的一些欄位也是方便我們使用的,想用的時候使用 %欄位名%
就能呼叫了。
比如說我在系統設定裡設定了 CMDER_ROOT
欄位,將其賦值為 D:\0ArtinD\cmder
,這是一個路徑。
然後我想開啟該路徑,就可以使用該欄位名啦:
簡單來說!就是程式設計中的變數名。定義一個常量,想用的時候可以使用。
使用者變數和系統變數
作業系統中有使用者的概念。
使用者變數只對當前登入的使用者生效。
系統變數對當前計算機的所有使用者生效。