linux環境變量

Linux是一個多用戶的操作系統。每個用戶登錄系統後,都會有一個專用的運行環境。通常每個用戶默認的環境都是相同的,這個默認環境實際上就是一組環境變量的定義。用戶可以對自己的運行環境進行定製,其方法就是修改相應的系統環境變量。

常見的環境變量

對於PATH和HOME等環境變量大家都不陌生。除此之外,還有下面一些常見環境變量。

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

◆ LOGNAME是指當前用戶的登錄名。

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

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

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

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

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

# PS1=" Hello,My NewPrompt  "

Hello,My NewPrompt

除了這些常見的環境變量,許多應用程序在安裝時也會增加一些環境變量,比如使用Java就要設置JAVA_HOME和CLASSPATH等,而安裝五筆輸入法會增加環境變量"XMODIFIERS=@im=fcitx"等。

定製環境變量

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

1. 顯示環境變量HOME

$ echo $HOME

/home/terry

2. 設置一個新的環境變量WELCOME

$ export WELCOME="Hello!"

$ echo $WELCOME

Hello!

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

$ env

HOSTNAME=terry.mykms.org

PVM_RSH=/usr/bin/rsh

SHELL=/bin/bash

TERM=xterm

HISTSIZE=1000

...

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

$ set

BASH=/bin/bash

BASH_VERSINFO=([0]="2"[1]="05b"[2]="0"[3]="1"[4]="release"[5]="i386-redhat-linux-gnu")

BASH_VERSION='2.05b.0(1)-release'

COLORS=/etc/DIR_COLORS.xterm

COLUMNS=80

DIRSTACK=()

DISPLAY=:0.0

...

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,它指向的是包含所有的環境變量的一個列表。下面的程序可以打印出當前運行環境裏面的所有環境變量:

#include <stdio.h>

extern char**environ;

int main ()

{

char**var;

for (var =environ;*var !=NULL;++var)

printf ("%s /n ",*var);

return 0;

}

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

----之二---

系統環境變量的設置

/etc/profile對整個系統有效.
確定你使用的是bash

添加
export LANG=zh_CN.GBK
export LC_ALL=zh_CN.GBK
export XMODIFIERS=@im=Chinput
csh的配置可能是
setenv LANG zh_CN.GBK
setenv LC_ALL zh_CN.GBK
setenv XMODIFIERS @im=Chinput

你也可以建立~/.bash_profile文件,在文件中設置
相關的文件還有.bash_logout .bash_login
比如我的.bash_logout指定
clear
每次退出是自動清屏

 

----之三----

在linux系統中大家都會接觸到環境變量的問題,在剛開始接觸時覺得有點難,經過多次驗證,總結了一些個人看法,應該問題不大。1、linux是 一個多用戶的操作系統。每個用戶登錄系統後,都會有一個專用的運行環境。通常每個用戶默認的環境都是相同的,這個默認環境實際上就是一組環境變量的定義。 用戶可以對自己的運行環境進行定製,其方法就是修改相應的系統環境變量。2、常在/etc/profile文件中修改環境得有點難,經過多次驗證,總結了 一些個人看法,應該問題不大。

1、linux是一個多用戶的操作系統。每個用戶登錄系統後,都會有一個專用的運行環境。通常每個用戶默認的環境都是相同的,這個默認環境實際上就是一組環境變量的定義。用戶可以對自己的運行環境進行定製,其方法就是修改相應的系統環境變量。

2、常在/etc/profile文件中修改環境變量,在這裏修改的內容是對所有用戶起作用的。
以下主要操作將在該文件中進行。

3、如何添加環境變量。
例如添加”NAME=liheng“ 。
在profile文件的最後添加如下內容export  NAME=liheng
變量值liheng可以加引號也可以不加,效果一樣。

4、在profile文件添加或修改的內容需要註銷系統才能生效。

5、重複定義變量怎樣理解。
經常出現的是對PATH變量的定義。
例如:在peofile文件默認對PATH變量都有設置PATH=¥¥¥¥¥¥¥(記不住了),在以後可能在對PATH設置,一般都加在profile文 件的最後PATH=······(打個比方)。而系統之中認定的PATH=·······¥¥¥¥¥¥¥¥¥,也就是說相同名字的環境變量,後寫入的先起 作用(通俗地講)。大家一定要注意。

6、特殊字符介紹。
例如在profile中有如下內容,通過以下內容說明特殊符號的用法。
export A=/q/jing:aaa/cc/ld
export B=.:/liheng/wang
export A=/cd/cdr:$A
大家注意紅色的符號:
表示並列含義,例如A變量值有多個,用:符號進行分離。
.   表示你操作的當前目錄。例如pap命令會查找B環境變量。
在/home鍵入pap命令,系統首先在/home目錄下(即當前路徑)查找關於 B 的內容,如果沒有在/liheng/wang目錄下查找關於B的內容。
表示該變量本次定義之前的值,例如$A代表/q/jing:aaa/cc/ld。也就是說
A=/cd/cdr:/q/jing:aaa/cc/ld   

7、使用env命令顯示所有的環境變量 。在命令提示符下鍵入env就行了。
set命令顯示所有本地定義的Shell變量。

8、常見的環境變量 
PATH:決定了shell將到哪些目錄中尋找命令或程序
HOME:當前用戶主目錄
MAIL:是指當前用戶的郵件存放目錄。
SHELL:是指當前用戶用的是哪種Shell。
HISTSIZE:是指保存歷史命令記錄的條數
LOGNAME:是指當前用戶的登錄名。 
HOSTNAME:是指主機的名稱,許多應用程序如果要用到主機名的話,通常是從這個環境變量中來取得的。
LANG/LANGUGE:是和語言相關的環境變量,使用多種語言的用戶可以修改此環境變量。 
PS1:是基本提示符,對於root用戶是#,對於普通用戶是$。
PS2:是附屬提示符,默認是“>”。可以通過修改此環境變量來修改當前的命令符,比如下列命令會將提示符修改成字符串“Hello,My NewPrompt :) ”。
# PS1=" Hello,My NewPrompt :) "

9、使用修改.bashrc文件進行環境變量的編輯,只對當前用戶有用。
使用修改 /etc/profile 文件進行環境變量的編輯,是對所有用戶有用。大家一定要注意區別。 

10、profile文件在系統啓動時將被運行。大家可以在裏面加入其他命令,但是一定要加正確,不然的話系統會啓動不起來的

如何設置Shell環境變量?

 

Shell設置添加去除顯示當前值註解
sh NAME=value1
export NAME
NAME=value2:$NAME unset NAME set(internal)或者env(exported) 如果需要子進程也看到該環境變量,需要使用export
ksh NAME=value1
export NAME
NAME=value2:$NAME unset NAME set(internal)或者env(exported) 如果需要子進程也看到該環境變量,需要使用export
csh setenv NAME value1 setenv NAME value2:$NAME unsetenv NAME set 不需要使用export
bash NAME=value1 NAME=value2:$NAME unset NAME set或者env 如果需要子進程也看到該環境變量,需要使用export
發佈了49 篇原創文章 · 獲贊 3 · 訪問量 44萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章