野声

Hey, 野声!

谁有天大力气可以拎着自己飞呀
twitter
github

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

之前學習 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 裡,那你就得手動輸入該文件的絕對路徑才能打開了。

Path 外的其他字段#

其他的一些字段也是方便我們使用的,想用的時候使用 %字段名% 就能調用了。
比如說我在系統設置裡設置了 CMDER_ROOT 字段,將其賦值為D:\0ArtinD\cmder,這是一個路徑。
設置 CMDER_ROOT

然後我想打開該路徑,就可以使用該字段名啦:
Snipaste_2019-05-02_22-47-37

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

在 Windows CMD 中,我們可以使用 %VAR% 來使用一個變量。

set VAR=hello
echo %VAR%

在 Unix Bash (Linux, Mac, etc.) 中,我們可以使用 $VAR 來使用一個變量。

export VAR=hello
echo $VAR

在 PowerShell 中,我們可以使用 $env:VAR 來使用一個變量。

$env:VAR = "hello"
Write-Output $env:VAR

用戶變量和系統變量#

操作系統中有用戶的概念。

用戶變量只對當前登錄的用戶生效。
系統變量對當前計算機的所有用戶生效。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。