1. 程式人生 > 其它 >【Linux】環境變數(environment variables)

【Linux】環境變數(environment variables)


來源: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




三、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核心類庫

/*******相與枕藉乎舟中,不知東方之既白*******/