1. 程式人生 > >windows 下環境變數 path 詳解

windows 下環境變數 path 詳解

在學習JAVA的過程中,涉及到多個環境變數(environment variable)的概念,如PATH。正確地配置這些環境變數,是能夠順利學習、開發的前提。而經常出現的問題是:有的學習者能夠按照提示一步一步地正確配置,但時間一長就忘了,出現了問題也無從下手。究其原因,就是對這些概念沒有理解,知其然但不知其所以然。下面的內容,就是幫助大家知其所以然。

一、基本原理

     首先看PATH環境變數。

     JAVA的初學者,必須要學會配置PATH環境變數,否則無法編譯、執行JAVA程式。那麼,為什麼要配置PATH環境變數呢?PATH環境變數是做什麼的呢?我們從一個常見的問題入手。

     當我們安裝好JAVA後,若沒有正確配置PATH環境變數,則在命令列視窗(開始->執行->輸入cmd,回車)下執行命令java -version(顯示JAVA的版本)命令時,會出現如下的錯誤提示資訊:

01

圖一

     這條錯誤資訊的意思是,你要求執行的“java”這條命令我不認識,不知道是個什麼玩意兒。那麼究竟這個“java”命令是何方神聖呢?在JDK的安裝目錄下(我的是D:\Java\jdk1.6.0_24),有一個bin目錄。開啟此目錄,會發現大量的可執行檔案(字尾名為exe的檔案。Windows預設隱藏檔案字尾名。要顯示字尾名,可在當前視窗上方選單欄裡點“工具”選單->資料夾選項->檢視->高階設定->清除“隱藏已知檔案型別的副檔名”前面的鉤鉤->確定)  。其中有一個可執行檔案即為java.exe。現在在命令列視窗下把當前目錄切換到這個bin目錄下。通過如下命令實現:

02圖二    

     在此目錄下,執行dir命令,顯示當前目錄下的所有檔案和目錄。從顯示結果中,我們可以清楚地看到“java.exe”這個檔案。如下圖所示:

03

圖三    

     實際上我們執行“java”命令,就是要執行“java.exe”這個可執行檔案(我們執行其他命令,本質上也是要執行某個程式檔案)。我們現在再來執行“java -version”這條命令試試。在命令列視窗下鍵入java -version,回車,結果如下圖所示:

04圖四    

     看來這次執行成功了。命令結果顯示當前JAVA的版本是“1.6.0_24”。執行java -?可檢視此命令的幫助資訊。可以看到它有很多選項,-version只是其中之一。另外一種方式是,寫出這些可執行檔案的完整(絕對)路徑(例如:d:\Java\jdk1.6.0_24\bin\java -version),就可以在任何目錄下執行了。讀者可自行嘗試。

     與java命令類似,javac命令目前也能在bin目錄下執行,但到其他目錄下就只能寫出其完整路徑了。在學習JAVA的過程中,我們經常需要使用javac和java這兩條命令來編譯、執行我們的JAVA程式。難道我們每次執行這兩條命令都要先切換到bin目錄下嗎或寫出一長串的絕對路徑嗎?能不能有一個辦法,讓我們能夠在任何目錄下都能自如地執行這些命令呢?

     解決的辦法就在於PATH環境變數。

    PATH是路徑的意思,PATH環境變數中存放的值,就是一連串的路徑。不同的路徑之間,用英文的分號(;)分隔開。系統執行使用者命令時,若使用者未給出絕對路徑,則首先在當前目錄下尋找相應的可執行檔案、批處理檔案(另外一種可以執行的檔案)等。若找不到,再依次在PATH儲存的這些路徑中尋找相應的可執行的程式檔案。系統就以第一次找到的為準;若搜尋完PATH儲存的所有路徑都未找到,則會顯示類似於圖一的錯誤資訊。

     明白了這些,我們就把bin目錄的完整路徑新增到PATH中。在命令列視窗下,可使用set命令完成此類的任務。直接執行set,會顯示系統當前所有環境變數的值,執行set /?,會顯示關於此命令的幫助資訊。使用set命令設定環境變數值的格式為:set 環境變數名=環境變數值。我們可以使用命令set path=D:\Java\jdk1.6.0_24\bin將java等程式檔案所在的目錄新增到PATH環境變數中(Windows下環境變數名不區分大小寫,這與UNIX不同)。但是這樣會使PATH的值只有“D:\Java\jdk1.6.0_24\bin”,它預先設定供其他程式使用的值就都被覆蓋了。因此,我們應該把值“D:\Java\jdk1.6.0_24\bin”追加到PATH中。為此,我們可以使用如下命令:

set path=%path%;D:\Java\jdk1.6.0_24\bin

     把PATH放在兩個百分號之間,指把PATH原有的值取出。其後的分號表示分隔不同的路徑值,之後才是我們要新增的值。注意,請在英文輸入法狀態下使用此命令。現在我們轉到任意一個目錄下執行java -version命令試試。結果如下圖所示:

05

圖五

     可見執行完全成功。

     但是這種使用set命令的方式設定的環境變數只對當前命令列視窗有效。一旦關閉此視窗,再次執行另一個命令列視窗時,PATH環境變數還是原來的值。因此,我們必須在Windows下修改PATH環境變數。步驟如下:

     右擊桌面“我的電腦”圖示->屬性->高階->環境變數,就打開了了設定環境變數的對話方塊。上面部分是為某個使用者設定。Windows設計為可多使用者使用一臺機器,每人一個賬戶。為某個賬戶設定的變數只對該使用者有效。下面部分是設定系統變數,對系統中的每個使用者有效。現在一般電腦都只有一個使用者,即Administrator。因此只需要為此賬戶設定即可。找到PATH環境變數,點“編輯”。在“變數值”框內現有值的後面輸入英文輸入法的分號,然後新增你想新增的值(在這裡是D:\Java\jdk1.6.0_24\bin)。一路確定,OK!

     現在再開啟一個命令列視窗,輸入echo %path%命令檢視path的值(或者直接使用path命令亦可)。現在,我們可以看到bin目錄已被新增到PATH中,再在任何目錄下執行java -version命令,均可成功。如下圖所示:

06

圖六

     其實我們執行其他命令都是這個原理。舉例來說,當你顯示PATH的值時,你會發現第一個值是C:\WINDOWS\system32。在Windows下開啟這個目錄,你會看到很多可執行檔案,它們的名字與我們常用的命令的名字是一致的。也就是說,我們執行這些命令,實際上系統就是根據PATH的這個值找到了相應的可執行檔案,再執行這些檔案的結果。如attrib.exe檔案,它對應於attrib命令,這是顯示/設定檔案屬性的命令,如下圖所示:

07

圖七

     現在我們通過命令set path=(等號右邊什麼都沒有,或隨便寫點東西)來清除PATH的值,再來執行attrib命令試試。如下圖所示:

08

圖八

     可以看出,完全相同的命令,現在已無法執行而報錯了。

     下面再通過命令set path=c:\windows\system32(Windows下不區分大小寫,因此windows與WINDOWS都正確),把attrib.exe檔案所在的路徑新增到PATH中,再執行試試。如下圖所示:

09

圖九

     很顯然,目前已能夠正確執行。另外一個常見的例子就是format.com(.com檔案是另一種可以執行的檔案),不過此命令是用來格式化的,實驗時請小心,不要由於失誤而格式化了某個盤。而且,根據上面的描述,在PATH環境變數未正確配置的時候,寫出這些檔案的絕對路徑(完整路徑),亦可以正確執行。讀者可自行實驗(在此宣告,由於已事先提醒,因此凡是由於誤操作帶來的資料丟失,概不負責!)。

二、內部命令、外部命令和批處理檔案

     我們現在啟動一個命令列視窗,按上述的方法把PATH的值全部清除,然後再執行dir、cd等命令。出乎我們意料的是,它們仍然能夠正確執行。這,又是什麼原因呢?

     我們來看看剛才那些報告錯誤的資訊,它們都提到了“內部命令”和“外部命令”的概念。那麼什麼是內部命令和外部命令呢?

     內部命令和外部命令是DOS(disk operating system,微軟早期基於命令列的作業系統)時代的概念,百度百科的解釋是:內部命令是隨每次啟動的COMMAND_COM裝入並常駐記憶體,而外部命令是一條單獨的可執行檔案。粗略地講,所謂內部命令就是最核心、使用最多的命令。為了提高響應速度,系統一啟動,這些命令就被載入到記憶體,因此可以迅速、直接地執行;而外部命令由於使用相對較少,就不預先載入到記憶體,當用戶使用時,再到硬碟上(c:\windows\system32)找相應的可執行檔案,然後載入到記憶體執行。像dir、cd等都是內部命令,而諸如attrib、format等都是外部命令。儘管DOS的時代早已成為了歷史,但某些操作卻必須在命令列模式下完成,對專業人士來說更是如此。因此,Windows產品一直保留著命令列模式這個工具。

     另外一個概念就是批處理檔案(字尾名為.bat,來源於批量的英語單詞batch),它是另外一種可以執行的檔案。簡單地說,批處理檔案包含了很多DOS命令。檔案執行時,就一條一條地執行這些命令。不一定順序執行,像通用的程式設計語言一樣,它也有自己的流程控制。批處理檔案建立很簡單:用任何一個文字編輯器(如Windows的記事本)建立一個文字檔案,然後把字尾名改為.bat即可。建立好的批處理檔案,你也可以用文字編輯器開啟,檢視它的“原始碼”。

相關推薦

windows 環境變數 path

在學習JAVA的過程中,涉及到多個環境變數(environment variable)的概念,如PATH。正確地配置這些環境變數,是能夠順利學習、開發的前提。而經常出現的問題是:有的學習者能夠按照提示一步一步地正確配置,但時間一長就忘了,出現了問題也無從下手。究其原因,就是

Windows許可權設定方法

原文連結:http://hi.baidu.com/wfhupnzfycbosze/item/b1a60092b848d78d581461f9 隨著動網論壇的廣泛應用和動網上傳漏洞的被發現以及SQL注入式攻擊越來越多的被使用,WEBSHELL讓防火牆形同虛設,一臺即使打了所有微軟

WindowsMongoDB基本操作

什麼是MongoDB 以下摘自百度百科: MongoDB是一個基於分散式檔案儲存的資料庫。由C++語言編寫。旨在為WEB應用提供可擴充套件的高效能資料儲存解決方案。MongoDB是一個介於關係資料庫和非關係資料庫之間的產品,是非關係資料庫當中功能最豐富,最像關係資料庫的。它支援的資料結構非常鬆散,是

windows 10 環境變數 path 變成舊版,調回 新版垂直狀態

今天像往常一樣操作電腦,但是改環境變數 path 的時候突然發現變成這個變成了以前的橫向文字: 這麼老長一大堆,改個環境變數老麻煩了! 想想昨天調環境變數的時候,是把自己的 JAVA_HOME 放到最前面,系統的一些放到後面去了 然後我就把 系統的  path中的&n

java環境變數配置

1.我的電腦或者計算機==》右擊==》屬性==》高階系統設定==》環境變數 2.在系統變數下==》新建==》   (1)變數名:JAVA_HOME  (儲存jdk路徑,方便引用,不然一大串的路

Windows Java呼叫CRF++

轉自:http://www.cnblogs.com/i-bugs/p/3580383.html 1.步驟一覽 2.步驟詳情 2.1.環境準備 Swig(Simplified Wrapper and Interface Generator)下載,Windows作業系統直接解

Linux 系統配置JDK1.8.0.11環境變數步驟

1.先進入Linux系統中選擇檔案目錄建立資料夾用於存放jdk檔案包 [baba@localhost ~]$ cd Desktop/ [baba@localhost Desktop]$ mkdir Java 2.進入以建立好的資料夾目錄下載jdk/本地上傳jdk檔案包

windows 安裝composer並下載第三方類庫(設定環境變數path

第一步 第二步 第三步 第四步 將變數值複製到編輯器裡 如下: C:\Program Files\Python36\Scripts\;C:\Program Files\Python36\;%SystemRoot%\system32;%SystemRo

ubuntu環境變數 profile environment

在Ubuntu中有如下幾個檔案可以設定環境變數   /etc/profile:在登入時,作業系統定製使用者環境時使用的第一個檔案,此檔案為系統的每個使用者設定環境資訊,當用戶第一次登入時,該檔案被執行.   /etc/environment:在登入時作業系統使用的第二個檔案

kettle的下載、安裝和初步使用(windows平臺)(圖文

1.0 index java_home 網站 int 目錄 解決辦法 for sql kettle的下載   ?Kettle可以在http://kettle.pentaho.org/網站下載 http:

Linux基於Hadoop的大資料環境搭建步驟(Hadoop,Hive,Zookeeper,Kafka,Flume,Hbase,Spark等安裝與配置)

Linux下基於Hadoop的大資料環境搭建步驟詳解(Hadoop,Hive,Zookeeper,Kafka,Flume,Hbase,Spark等安裝與配置) 系統說明 搭建步驟詳述 一、節點基礎配置 二、H

Windows-新增環境變數path

使用命令提示符((cmd)(批處理)(Batch)(.bat))新增環境變數 永久環境變數 命令提示符下修改 ==注意:要使用管理員身份執行cmd== set PATH=%PATH%;要新增的路徑 reg add "HKLM\SYSTEM\CurrentControlSet\Control\Sessi

Qt5.11.1_Opencv3.4.4 Windows環境搭建錯誤

最近在搞opencv計算機影象處理,要用Qt與Opencv聯合開發,搭建環境一路坎坷,搞了差不多快一天,但是最終還是成功搭建了。廢話不多說,給大家分享一下搭建的心得: 搭建的具體部分大家可以看 https://blog.csdn.net/sinat_362646

Centos系統修改環境變數PATH路徑的方法

要把/etc/apache/bin目錄新增到PATH中,方法有三: 1.#PATH=$PATH:/etc/apache/bin 使用這種方法,只對當前會話有效,也就是說每當登出或登出系統以後,PATH 設定就會失效 2.#vi /etc/profile 在適當位置新增 P

windows系統hosts文件

地址映射 windows系統 bsp 我們 本機 局域網 計算 host 優先 1.在windows系統下,C:\Winnt\System32\Drivers\etc裏面有一個hosts文件。該文件可以用純文本文件打開。 2.該文件裏,可以配置地址映射。前面配置ip地址,後

Linux/Unix環境的make命令

無論是在Linux還是在Unix環境中,make都是一個非常重要的編譯命令。  Makefile檔案   Make工具最主要也是最基本的功能就是通過makefile檔案來描述源程式之間的相互關係並自動維護編譯工作。而makefile 檔案需要按照某種語法進行編寫,檔案中需要說

linux如何設定環境變數PATH的多種方式

Ubuntu Linux系統環境變數配置檔案: /etc/profile : 在登入時,作業系統定製使用者環境時使用的第一個檔案 ,此檔案為系統的每個使用者設定環境資訊,當用戶第一次登入時,該檔案被執行。 /etc /environment : 在登入時作業系統使用的第二個

綜合運用: C++11 多線程生產者消費者模型(轉)

並發 rep 生產 我會 交流 模型 操作 const ref 生產者消費者問題是多線程並發中一個非常經典的問題,相信學過操作系統課程的同學都清楚這個問題的根源。本文將就四種情況分析並介紹生產者和消費者問題,它們分別是:單生產者-單消費者模型,單生產者-多消費者模型,多生產

Windows環境變量顯示、設置或刪除操作詳情

line echo 相同 支持 得到 運算符 for 循環 原因 操作 顯示、設置或刪除 cmd.exe 環境變量。 SET [variable=[string]] variable 指定環境變量名。 string 指定要指派給變量的一系列字符串。 要顯示當前環境

Linux hosts文件

domain none oca 不同 詳解 als 機器 區別 int Linux 下hosts文件詳解 主機名: 無論在局域網還是INTERNET上,每臺主機都有一個IP地址,是為了區分此臺主機和彼臺主機,也就是說IP地址就是主機的門牌號。 公網:IP地