1. 程式人生 > >在不同程式語言安裝過程中系統變數設定的一些問題(尤其是path相關)

在不同程式語言安裝過程中系統變數設定的一些問題(尤其是path相關)

        最近在學習程式設計的時候,會經常遇到環境變數設定的相關問題,環境變數這個概念對於我來說比較抽象,所以今天專門針對環境變數的一些相關問題找了找資料。把東西寫下來,以後用到的時候也能找到。

在WIN中環境變數的位置:用滑鼠右鍵單擊系統桌面上的“計算機”圖示, 從彈出的右鍵選單中點選“屬性”命令,按下其後介面中的“高階系統設定”按鈕,進入系統屬性高階設定對話方塊,點選“環境變數”按鈕,在這裡,我們可以通過“新建”|“編輯”|“刪除”等按鈕,對各種環境變數進行合適管理操作。

一個環境變數往往由變數名稱和變數值組成,環境變數名稱和數值設定時,不要含有空格,也不要用中文,變數值可以重新賦值,而常量值一直是固定不變的

1、所謂Windows環境變數,指的是Windows指定作業系統工作環境的一些設定選項或屬性引數,例如指定系統資料夾或臨時資料夾的位置等。與常量相比,一個環境變數往往由變數名稱和變數值組成,環境變數名稱和數值設定時,不要含有空格,也不要用中文,變數值可以重新賦值,而常量值一直是固定不變的。例如,使用Path變數可以設定Windows系統查詢檔案的路徑,使用Windir變數可以設定系統資料夾路徑,使用ComSpec變數可以設定“cmd.exe”命令的路徑等。

在Windows工作環境中,環境變數包含系統變數和使用者變數

    使用者變數只對當前使用者有效,如果你切換登陸使用者的話,那之前使用者的使用者變數就不適用於當前使用者了

    而系統變數對所有使用者有效,只要是在這臺計算機上登陸的使用者都可以用

在我們安裝不同程式語言的時候,path變數的設定通俗來講就是目標程式(或者說命令的)儲存路徑

2、有時,在系統變數和使用者變數中,同時存在某個同名環境變數,那麼該變數的值究竟是系統變數中的值還是使用者變數中的值呢?其實都不是,該變數的值應該是系統變數值與使用者變數值的疊加,嚴格來講,搜尋時是先搜尋系統變數的值,然後搜尋使用者變數的值。當用戶變數和系統變數同名時,使用者變數的值不會覆蓋系統變數的值。

例如在系統變數與使用者變數中同時包含有path變數,系統的掃描順序是先掃描系統變數,如果在系統變數中找到了所要執行的命令,那麼就不再對使用者變數進行掃描,即使使用者變數中相同命令也不進行掃描;如果在系統變數中沒有找到目標命令那麼再去掃描使用者變數。如下圖所示

圖1,環境變數

上圖中使用者變數與系統變數中都有一個path變數,由於我在安裝Anaconda之前已經安裝了py3.7,所以在我的電腦中使用者變數和系統變數中的path變數都包含python的路徑,當我在DOS中執行python 的命令時顯示的如下圖所示,時Anaconda的python3.5版本

所以說,在系統檢查變數的時候,實現檢查系統變數,沒有找到結果的話再去使用者變數中找

3、例如在path 變數中有很多不同的路徑,但是在系統掃描path變數中一條條路徑的時候也是有順序的

如上圖所示就是path變數的一條條路徑,

當在命令列中執行一條指令例如python 時,系統會在path中從上至下查詢要執行的程式,如果找到的話就執行下去,後面的指令就不再訪問了

例如下面:

我將python3.7的目錄同時加入到path變數中,在命令列下執行python指令,如下圖

顯示的仍然是Anaconda的python版本

系統在Anaconda的目錄中找到python後就不會再掃描下面的目錄了