1. 程式人生 > >set、env、export——Linux中的環境變數命令

set、env、export——Linux中的環境變數命令

Linux是一個多使用者的作業系統。每個使用者登入系統後,都會有一個專用的執行環境。通常每個使用者預設的環境都是相同的,這個預設環境實際上就是一組環境 變數的定義。使用者可以對自己的執行環境進行定製,其方法就是修改相應的系統環境變數。

什麼是環境變數

環境變數是一個具有 特定名字的物件,它包含了一個或者多個應用程式所將使用到的資訊。許多使用者(特別是那些剛接觸Linux的新手)發現這些變數有些怪異或者難以控制。其 實,這是個誤會:通過使用環境變數,你可以很容易的修改一個牽涉到一個或多個應用程式的配置資訊。

常見的環境變數

對於 PATH和HOME等環境變數大家都不陌生。

PATH能夠指定命令的搜尋路徑,那麼動態連結庫的路徑用什麼變數指定呢?或者就是在 PATH裡面?
比如有一個程式需要/usr/local/lib下面的一個庫檔案,應該怎麼指定其路徑呢?
經常看到有些變數如 LD_LIBRARY_PATH,LIBPATH,CLASSPATH等,他們之間有什麼不同和關係?

除此之外,還有下面一些常見環境變 量。

◆ HISTSIZE是指儲存歷史命令記錄的條數。

◆ LOGNAME是指當前使用者的登入名。

◆ HOSTNAME是指主機的名稱,許多應用程式如果要用到主機名的話,通常是從這個環境變數中來取得的。

◆ SHELL是指當前使用者用的是哪種Shell。

◆ LANG/LANGUGE是和語言相關的環境變數,使用多種語言的使用者可以修改此環境變數。

◆ MAIL是指當前使用者的郵件存放目錄。

◆ PS1是基本提示符,對於root使用者是#,對於普通使用者是$。PS2是附屬提示符,預設是“>”。可以通過修改此環境變數來修改當前的命令符,比 如下列命令會將提示符修改成字串“Hello,My NewPrompt  ”。

除了這些常見的環境變數,許多應用程式在安裝時也會增加 一些環境變數,比如使用Java就要設定JAVA_HOME和CLASSPATH等,而安裝五筆輸入法會增加環境變數"[email protected]=fcitx "等。

定製 環境變數

環境變數是和Shell緊密相關的,使用者登入系統後就啟動了一個Shell。對於Linux來說一般是bash,但也可以重新設 定或切換到其它的 Shell。環境變數是通過Shell命令來設定的,設定好的環境變數又可以被所有當前使用者所執行的程式所使用。對於bash這個Shell程式來說,可 以通過變數名來訪問相應的環境變數,通過export來設定環境變數。下面通過幾個例項來說明。

1. 顯示環境變數HOME

2. 設定一個新的環境變數WELCOME

3. 使用env命令顯示所有的環境變數

4. 使用set命令顯示所有本地定義的Shell變數

5. 使用unset命令來清除環境變數

set可以設定某個環境變數的值。清除環境變數的值用unset命令。如果未指定值,則該變數值將被 設為NULL。示例如下:

$ export TEST="Test..." #增加一個環境變數TEST

$ env|grep TEST #此命令有輸入,證明環境變數TEST已經存在了

TEST=Test...

$ unset $TEST #刪除環境變數TEST

$ env|grep TEST #此命令沒有輸出,證明環境變數TEST已經存在了

6. 使用readonly命令設定只讀變數

如果使用了readonly命令的話,變數就不可以被修改或清除了。示例如下:

$ export TEST="Test..." #增加一個環境變數TEST

$ readonly TEST #將環境變數TEST設為只讀

$ unset TEST #會發現此變數不能被刪除

-bash: unset: TEST: cannot unset: readonly variable

$ TEST="New" #會發現此也變數不能被修改

-bash: TEST: readonly variable

7. 用C程式來訪問和設定環境變數

對於C程式 的使用者來說,可以使用下列三個函式來設定或訪問一個環境變數。

◆ getenv()訪問一個環境變數。輸入引數是需要訪問的變數名字,返回值是一個字串。如果所訪問的環境變數不存在,則會返回NULL。

◆ setenv()在程式裡面設定某個環境變數的函式。

◆ unsetenv()清除某個特定的環境變數的函式。

另外, 還有一個指標變數environ,它指向的是包含所有的環境變數的一個列表。下面的程式可以打印出當前執行環境裡面的所有環境變數:

還可以通過修改一些相關的環境定義檔案來修改 環境變數,比如對於Red Hat等Linux發行版本,與環境相關的檔案有/etc/profile和~/.bashrc等。修改完畢後重新登入一次就生效了。

重 要的例子

下表羅列了一些Linux系統使用的變數並說明了它們的用處。在表格後面將列舉一些變數例值。

變數 說明


下面你可以找到所有這些變數定義的範 例:

程式碼 1: 定義範例

對於bash shell
關 於環境變數命令介紹:

常見的環境變數



使用修改 /etc/profile 檔案進行環境變數的編輯,是對所有使用者有用。大家一定要注意區別。 

相關推薦

linux環境變數的設定

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

Linux環境變數到底寫在哪個檔案?解析login shell 和 no-login shell

login shell:取得bash 時需要完整的登入流程,就稱為login shell。舉例來說,同tty1~tty6登入時, 需要輸入使用者名稱和密碼,此時取得的bash就稱為login shell non-login shell:取得bash介面的方法不需要重複登入的動作。 舉兩個例子 (1)以X

Linux set命令引數及用法詳解--Linux設定環境變數命令

功能說明:設定shell。 語  法:set [+-abCdefhHklmnpPtuvx] 補充說明:用set 命令可以設定各種shell選項或者列 出shell變數.單個選項設定常用的特性.在某些選項之後-o引數將特殊特性開啟.在某些選項之後使用+o引數將關閉某些特性,不

setenvexport——Linux環境變數命令

Linux是一個多使用者的作業系統。每個使用者登入系統後,都會有一個專用的執行環境。通常每個使用者預設的環境都是相同的,這個預設環境實際上就是一組環境 變數的定義。使用者可以對自己的執行環境進行定製,其方法就是修改相應的系統環境變數。 什麼是環境變數 環境變數是一個具有

ubuntu環境變數檔案/etc/profile.profile.bashrc/etc/bash.bashrc之間的區別和聯絡(轉)

寫在前面:不同的發行版裡面檔案的命名可能有所不同,如有的發行版etc目錄下有bashrc,有的發行版下面是bash.bashrc。這個根據每個人不同的發行版注意下具體的檔名稱。 /etc/profile:此檔案為系統的每個使用者設定環境資訊,當用戶第一次登入時,該檔案被執行.並從/etc/pro

setenvexport函式設定環境變數

    setenv函式   函式 setenv()用來改變或增加環境變數的內容。相關函式有 getenv,putenv,unsetenv。   表頭檔案為#include<stdlib.h>   定義函式 int setenv(const char *na

WindowsLinux環境變數

        什麼是環境變數?環境變數一般是指在作業系統中用來指定作業系統執行環境的一些引數,比如臨時資料夾位置和系統資料夾位置等。 這點有點類似於DOS時期的預設路徑,當你執行某些程式時除了在當前資料夾中尋找外,還會到設定的預設路徑中去查詢。簡單地說這裡 的“P

Linux環境變數/etc/profile/etc/bashrc~/.bashrc的區別

最近配置了JAVA和Scala的環境變數,發現自己對Linux下 /etc/profile、/etc/bashrc、~/.bashrc的區別不是特別清楚,特此查閱了相關資料,整理下來,供以後查閱。如有錯誤之處,還望各位朋友批評指正。 ①/etc/profile

Linux怎麼檢視命令的幫助文件怎麼檢視系統配置檔案的幫助文件?

引言:上期回顧(想要學習的童鞋可以點選看看) 上一章講訴了怎麼快速查詢檔案,以及怎麼找到一個命令所在位置,那麼這一章就來講怎麼檢視命令的幫助文件。在Linux命令中,我們是不會每個命令都會講到的,如果遇到沒有見過的命令該怎麼辦呢?建議大家先不要去問前輩,這樣自己的印象不會深

linux export 用法及環境變數

 Linux export命令用於設定或顯示環境變數。 在shell中執行程式時,shell會提供一組環境變數。export可新增,修改或刪除環境變數,供後續執行的程式使用。 一、語法如下: export [-fnp][變數名稱]=[變數設定值] 引數說明: -f  代表[

linuxunix下檢視和新增環境變數

$PATH:決定了shell將到哪些目錄中尋找命令或程式,PATH的值是一系列目錄,當您執行一個程式時,Linux在這些目錄下進行搜尋編譯連結。 編輯 PATH 宣告,其格式為:   PATH=

Linux環境變量/etc/profile ~/.bashrc 和 ~/.bash_profile 和 /etc/bashrc 的區別

linux中環境變量/etc/profile ~/.bashrc 和 ~/.bash_profile 和 /etc/bashrc 的區別 這個一定要理解登錄式shell和非登錄式shell的區別,前者是完全切換用戶,後者是不完全,就算切換過來了,你pwd時家目錄還是之前的家目錄,所以 登錄

classpathpathJAVA_HOME的作用及JAVA環境變數配置

CLASSPATH是什麼?它的作用是什麼? 它是javac編譯器的一個環境變數。它的作用與import、package關鍵字有關。當你寫下improt java.util.*時,編譯器面對import關鍵字時,就知道你要引入java.util這個package中的類;但是編譯器如何知道你把這

Linux編譯安裝軟體過程環境變數的設定

1.編譯過程中執行“./configure”時,最好使用--prefix選項手動設定軟體的安裝目錄,如“$./configure --prefix=/home/lemon/mpich2-install”,這樣可以保證軟體安裝後能夠找到需要使用的可執行檔案及庫檔案的位置。 2.當需要指定某些依賴項時,使用--

虛擬機器裝linux linux伺服器環境變數修改

使用vmware時,在虛擬機器設定裡,設定CD/DVD為系統映象,掛載時,有時會有找不到介質或者no medium found之類的提示。 根本原因是iso映象並沒有載入到虛擬機器系統內。 解決辦法: 首先確定,VMWARE的CD/DVD設定內,已經成功選中ISO映象。如下

NS-3在Linux環境配置問題解決

本人這幾天已經被NS-3這個軟體搞瘋了,自己太小白了,而且對Linux系統又不太懂,今天終於搞定NS-3的環境配置了!挺開心的前幾天在配置環境時各種遇到問題,方法都是從各種部落格中找的,但有時候由於虛擬機器作業系統版本或者其他一些原因,導致網上的一些教程對我沒用。。。。。。官

linux 利用export 更新系統環境變數

參考部落格:   http://www.cnblogs.com/amboyna/archive/2008/03/08/1096024.html 方法大致3種: 1、利用export 命令匯入環境變數,比如匯入MySQL環境變數: export PATH=$PATH:/us

.net持續整合cake篇之cake任務依賴自定義配置薦及環境變數讀取

系列目錄 新建一個構建任務及任務依賴關係設定 上節我們通過新建一個HelloWorld示例講解了如何編寫build.cake以及如何下載build.ps1啟動檔案以及如何執行.實際專案中,我們使用最多的是對專案進行編譯.本節我們講解如何建立一個編譯任務. 新增一個編譯任務 我們仍然使用上節使用的build

[Linux] Linux 的基本命令與目錄結構(初稿)

展開 src 文件名 auto 使用 bin target editor 提示符 Linux 中的基本命令與目錄結構 目錄 一、Linux 基本目錄結構 二、基本命令 三、瀏覽目錄 四、中間命令 五、更改密碼 六、環境變量和 shell 變量 七、命令路

[Linux] Linux 的基本命令與目錄結構(待移除)

head 命令 存在 壓縮 下載 創建文件 name 批處理 targe 簡化 Linux 中的基本命令與目錄結構 目錄 一、Linux 基本目錄結構 二、基本命令 三、瀏覽目錄 四、中間命令 五、更改密碼 六、環境變量和 shell 變量 七、命令路徑