來源:https://blog.csdn.net/qq_43442524/article/details/100077111
https://blog.csdn.net/jiangyanting2011/article/details/78875928
一、概述
一般是指在操作系統中用來指定操作系統運行環境的一些參數,如:臨時文件夾位置和系統文件夾位置等。
環境變量是在操作系統中一個具有特定名字的對象,它包含了一個或者多個應用程序所將使用到的信息,相當於給系統或用戶應用程序設置的一些參數。。
例如Windows和DOS操作系統中的path環境變量。
當要求系統運行一個程序而沒有告訴它程序所在的完整路徑時,系統除了在當前目錄下面尋找此程序外,還應到path中指定的路徑去找。
用戶通過設置環境變量,來更好的運行進程。
DWORD GetEnvironmentVariable(LPCSTR lpName, LPSTR lpBuffer, DWORD dSize)
lpName是要求查詢的環境變量的名;
lpBuffer是返回所指定的環境變量的值;
dSize是告訴函數lpBuffer可以存放多少個字節
分析本地故障時原因很可能就是因為環境變量中的默認路徑被刪除的結果。
默認路徑一經設置,當前系統如有程序運行時需要某些DLL或EXE文件,以及Active控件時就會到所有默認路徑中去查找。
如果在這些目錄中查找到相應的程序則自動加載,查找不到則報告缺少某某文件的錯誤信息。
二、Linux系統
1、需要了解的
shell環境依賴於多個文件的設置。當shell被調用時,它從兩個初始文件讀取命令。
/etc/profile包含了系統變量,它由系統管理員維護,由系統管理員設置本地系統變量和特殊命令。
普通用戶的啟動信息文件($HOME/.bash_project)由各用戶自己維護,該文件可以被修改以實現任何特定的系統初始化。
只有在特定的情況下才讀取profile文件,確切的說是在用戶登陸的時候。
當運行shell腳本或subshell以后,就無須再讀profile。
雖然所有profile都可選的,但是基本上所有系統都有/etc/profile。
Linux中環境變量包括系統級和用戶級。
用戶級的環境變量則是該用戶使用系統時加載的環境變量。
(1)系統級
1)/etc/environment
是系統在登錄時讀取的第一個文件,用於為所有進程設置環境變量。
系統使用此文件時並不是執行此文件中的命令,而是根據KEY=VALUE模式的代碼,對KEY賦值以VALUE。
因此文件中如果要定義PATH環境變量,只需加入一行形如PATH=$PATH:/xxx/bin的代碼即可。
2)/etc/profile
是系統登錄時執行的第二個文件,可以用於設定針對全系統所有用戶的環境變量。
該文件一般是調用/etc/bash.bashrc文件。
/etc/bash.bashrc:系統級的bashrc文件,為每一個運行bash shell的用戶執行此文件。此文件會在用戶每次打開shell時執行一次。
注意:/etc/environment是設置整個系統的環境,而/etc/profile是設置所有用戶的環境,前者與登錄用戶無關,后者與登錄用戶有關。 這兩個文件修改后一般都要重啟系統才能生效。
(2)用戶級(這些文件處於home目錄下)
系統級的環境變量是每個登錄到系統的用戶都要讀取的系統變量。
1)~/.profile: 是對應當前登錄用戶的profile文件,用於定制當前用戶的個人工作環境。
每個用戶都可使用該文件輸入專用於自己使用的shell信息,當用戶登錄時,該文件僅僅執行一次!默認情況下,他設置一些環境變量,執行用戶的.bashrc文件。這里是推薦放置個人設置的地方。
2)~/.bashrc: 是對應當前登錄用戶的bash初始化文件,當用戶每次打開shell時,系統都會執行此文件一次。平時設置這個文件就可以了。
幾個文件的執行先后順序應當是:
/etc/enviroment –>/etc/profile –>~/.profile –>/etc/bash.bashrc–> ~/.bashrc
如果定義了變量ENV且已經傳遞到環境中,則所有的bash shell都要讀取並調用由這個變量制定的文件所包含的命令。
這個文件用來定義所有bash shell的特征,而不僅僅是登陸到shell。這個文件的典型的名字是$HOME/,bashrc。
2、設置
(1)臨時
在linux下設定環境變量時,如果只是臨時用一下,可以直接在shell下用set或export命令設定環境變量。
只能在當前shell腳本下可用.,切換到另一個終端就會失效。
PYTHONPATH設置為該路徑:
export PYTHONPATH=/home/yanting/learning/ssd-caffe/python #export的意思就是將局部變量設置為環境變量
這幾個環境變量已經有一些默認值了,不過我們可以追加內容,比如修改PATH:
PATH = /abc/def:$PATH #冒號的意思是並列
(2)如果希望此環境變量每次開機或打開shell時自動設定而無須每次都手動設定,那么需要將export命令寫入以上的系統文件中。
1)打開當前用戶環境變量:
終端輸入:sudo gedit ~/.bashrc,輸入用戶密碼,則會打開.bashrc文件,
在其末尾添加:
export PYTHONPATH=/home/yanting/learning/caffe/python:$PYTHONPATH # path采用:來分隔,冒號左右不需要空格.
:$PYTHONPATH 在后面:新添加的path優先搜索;
$PYTHONPATH: 在前面:新添加的path后面搜索;
不加代表新路徑設置為PYTHONPATH路徑。
在終端執行:source ~/.bashrc ,使其立即生效,或者重啟電腦即可。
2)在終端使用 sudo gedit /etc/profile 打開環境變量的文件,然后將自己的環境變量加入到文件之后,用export 執行。
在終端里面使用source /etc/profile 來更新環境變量。
3)采用export添加新的路徑到環境變量PATH中
export PATH=$PATH:/home/cc/path1:/home/cc/path2 #添加搜索路徑path2到PATH中,采用:來分隔,冒號左右不需要空格
#若需要將路徑放在優先搜索位置,將$PATH放在后面
export PATH=/home/cc/path1:/home/cc/pck:$PATH
3、查看
查看全部,使用env命令即可。
查看單個,可以使用echo:
echo $PYTHONPATH
4、常用系統變量
$ HOME、$ SHELL、$USER等
$USER 可以直接查看當前user
三、Java
PATH是操作系統用的,用來指定操作系統需要使用到的可執行程序的位置。
對於Java來說,通常需要把JDK的bin目錄添加進入PATH中,這樣你就可以在任意目錄下使用bin下面的可執行程序,如javac.exe、java.exe等。
這個變量一定要保證將JRE/JDK的bin納入其中。
JDK,JRE,JVM三者之間的關系:
JDK = JRE + Java的開發工具(javac.exe,java.exe,javadoc.exe)
JRD = JVM + Java核心類庫