env --- 顯示/設(shè)置當(dāng)前用戶變量
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信平臺(tái)小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了杜爾伯特免費(fèi)建站歡迎大家使用!
用戶變量存在于所有的shell中,與用什么shell無關(guān),比如:HOME,SHELL等
export --- 設(shè)置當(dāng)前終端有效的臨時(shí)變量
顯示/設(shè)置當(dāng)前導(dǎo)出成用戶變量的shell變量?!禠inux就該這么學(xué)》 一起學(xué)習(xí)。
終端關(guān)閉的同時(shí),export的變量也失效。
Linux環(huán)境變量基礎(chǔ)配置說明
1
1、直接用export命令:
#export PATH=$PATH:/opt/au1200_rm/build_tools/bin
查看是否已經(jīng)設(shè)好,可用命令export查看:
[root@localhost bin]# export
declare -x BASH_ENV="/root/.bashrc"
declare -x G_BROKEN_FILENAMES="1"
declare -x HISTSIZE="1000"
declare -x HOME="/root"
declare -x HOSTNAME="localhost.localdomain"
declare -x INPUTRC="/etc/inputrc"
declare -x LANG="zh_CN.GB18030"
declare -x LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
declare -x LESSOPEN="|/usr/bin/lesspipe.sh %s"
declare -x LOGNAME="root"
declare -x LS_COLORS="no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*NaNd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:"
declare -x MAIL="/var/spool/mail/root"
declare -x OLDPWD="/opt/au1200_rm/build_tools"
declare -x PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin:/opt/au1200_rm/build_tools/bin"
declare -x PWD="/opt/au1200_rm/build_tools/bin"
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x SSH_ASKPASS="/usr/libexec/openssh/gnome-ssh-askpass"
declare -x SSH_AUTH_SOCK="/tmp/ssh-XX3LKWhz/agent.4242"
declare -x SSH_CLIENT="10.3.37.152 2236 22"
declare -x SSH_CONNECTION="10.3.37.152 2236 10.3.37.186 22"
declare -x SSH_TTY="/dev/pts/2"
declare -x TERM="linux"
declare -x USER="root"
declare -x USERNAME="root"
可以看到,環(huán)境變量已經(jīng)設(shè)好,PATH里面已經(jīng)有了我要加的編譯器的路徑。
2
2、修改profile文件:
#vi /etc/profile
在里面加入:
export PATH="$PATH:/opt/au1200_rm/build_tools/bin"
讓環(huán)境變量立即生效需要執(zhí)行如下命令:
#source /etc/profile
3
3. 修改.bashrc文件:
# vi /root/.bashrc
在里面加入:
export PATH="$PATH:/opt/au1200_rm/build_tools/bin"
4
特別說明:
方法2、3
一般需要重新注銷系統(tǒng)才能生效,最后可以通過echo命令測(cè)試一下:
# echo $PATH
看看輸出里面是不是已經(jīng)有了/my_new_path這個(gè)路徑了。
END
Linux環(huán)境變量配置注意事項(xiàng)
1
標(biāo)準(zhǔn)位置及非標(biāo)注位置環(huán)境變量:
對(duì)于:“/bin”、“/sbin”、“/usr/bin”、“/usr/sbin”、“/usr/local/bin”等路徑已經(jīng)在系統(tǒng)環(huán)境變量中了,如果可執(zhí)行文件在這幾個(gè)標(biāo)準(zhǔn)位置,在終端命令行輸入該軟件可執(zhí)行文件的文件名和參數(shù)(如果需要參數(shù)),回車即可。
如果不在標(biāo)準(zhǔn)位置,文件名前面需要加上完整的路徑。
不過每次都這樣跑就太麻煩了,一個(gè)“一勞永逸”的辦法是把這個(gè)路徑加入環(huán)境變量。命令 “PATH=$PATH:路徑”可以把這個(gè)路徑加入環(huán)境變量,但是退出這個(gè)命令行就失效了。要想永久生效,需要把這行添加到環(huán)境變量文件里。有兩個(gè)文件可選:“/etc/profile”和用戶主目錄下的“.bash_profile”,“/etc/profile”對(duì)系統(tǒng)里所有用戶都有效,用戶主目錄下的“.bash_profile”只對(duì)這個(gè)用戶有效。
“PATH=$PATH:路徑1:路徑2:...:路徑n”,意思是可執(zhí)行文件的路徑包括原先設(shè)定的路徑,也包括從“路徑1”到“路徑n”的所有路徑。當(dāng)用戶輸入一個(gè)一串字符并按回車后,shell會(huì)依次在這些路徑里找對(duì)應(yīng)的可執(zhí)行文件并交給系統(tǒng)核心執(zhí)行。那個(gè)“$PATH”表示原先設(shè)定的路徑仍然有效,注意不要漏掉。某些軟件可能還有“PATH”以外類型的環(huán)境變量需要添加,但方法與此相同,并且也需要注意“$”。
2
注意,與DOS/Window不同,Linux類系統(tǒng)環(huán)境變量中路徑名用冒號(hào)分隔,不是分號(hào)。另外,軟件越裝越多,環(huán)境變量越添越多,為了避免造成混亂,建議所有語句都添加在文件結(jié)尾,按軟件的安裝順序添加。
格式如下():
# 軟件名-版本號(hào)
PATH=$PATH:路徑1:路徑2:...:路徑n
其他環(huán)境變量=$其他環(huán)境變量:...
在“profile”和“.bash_profile”中,“#”是注釋符號(hào),寫在這里除了視覺分隔外沒有任何效果。
設(shè)置完畢,注銷并重新登錄,設(shè)置就生效了。如果不注銷,直接在shell里執(zhí)行這些語句,也能生效,但是作用范圍只限于執(zhí)行了這些語句的shell。
相關(guān)的環(huán)境變量生效后,就不必老跑到軟件的可執(zhí)行文件目錄里去操作了。
END
Linux配置示例:配置java環(huán)境變量
1
1.修改/etc/profile文件
如果你的計(jì)算機(jī)僅僅作為開發(fā)使用時(shí)推薦使用這種方法,因?yàn)樗杏脩舻膕hell都有權(quán)使用這些環(huán)境變量,可能會(huì)給系統(tǒng)帶來安全性問題。
(1)用文本編輯器打開/etc/profile
(2)在profile文件末尾加入:
JAVA_HOME=/usr/share/jdk1.5.0_05
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
(3)重新登錄
注解:
a. 你要將 /usr/share/jdk1.5.0_05jdk 改為你的jdk安裝目錄
b. linux下用冒號(hào)“:”來分隔路徑
c. $PATH / $CLASSPATH / $JAVA_HOME 是用來引用原來的環(huán)境變量的值,在設(shè)置環(huán)境變量時(shí)特別要注意不能把原來的值給覆蓋掉了,這是一種常見的錯(cuò)誤。
d. CLASSPATH中當(dāng)前目錄“.”不能丟,把當(dāng)前目錄丟掉也是常見的錯(cuò)誤。
e. export是把這三個(gè)變量導(dǎo)出為全局變量。
f. 大小寫必須嚴(yán)格區(qū)分。
2
2. 修改.bashrc文件
這種方法更為安全,它可以把使用這些環(huán)境變量的權(quán)限控制到用戶級(jí)別,如果你需要給某個(gè)用戶權(quán)限使用這些環(huán)境變量,你只需要修改其個(gè)人用戶主目錄下的.bashrc文件就可以了。
(1)用文本編輯器打開用戶目錄下的.bashrc文件
(2)在.bashrc文件末尾加入:
set JAVA_HOME=/usr/share/jdk1.5.0_05
export JAVA_HOME
set PATH=$JAVA_HOME/bin:$PATH
export PATH
set CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export CLASSPATH
(3)重新登錄
3
3. 直接在shell下設(shè)置變量
不贊成使用這種方法,因?yàn)閾Q個(gè)shell,你的設(shè)置就無效了,因此這種方法僅僅是臨時(shí)使用,以后要使用的時(shí)候又要重新設(shè)置,比較麻煩。
只需在shell終端執(zhí)行下列命令:
export JAVA_HOME=/usr/share/jdk1.5.0_05
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
END
LinuxRedHat 9.0環(huán)境變量配置
變量簡(jiǎn)介
Linux 是一個(gè)多用戶的操作系統(tǒng)。每個(gè)用戶登錄系統(tǒng)后,都會(huì)有一個(gè)專用的運(yùn)行環(huán)境。通常每個(gè)用戶默認(rèn)的環(huán)境都是相同的,這個(gè)默認(rèn)環(huán)境實(shí)際上就是一組環(huán)境變量的定義。用戶可以對(duì)自己的運(yùn)行環(huán)境進(jìn)行定制,其方法就是修改相應(yīng)的系統(tǒng)環(huán)境變量。
常見的環(huán)境變量
$PATH:決定了shell將到哪些目錄中尋找命令或程序
$HOME:當(dāng)前用戶主目錄
$MAIL:是指當(dāng)前用戶的郵件存放目錄。
$SHELL:是指當(dāng)前用戶用的是哪種Shell。
$HISTSIZE:是指保存歷史命令記錄的條數(shù)
$LOGNAME:是指當(dāng)前用戶的登錄名。
$HOSTNAME:是指主機(jī)的名稱,許多應(yīng)用程序如果要用到主機(jī)名的話,通常是從這個(gè)環(huán)境變量中來取得的。
$LANG/LANGUGE:是和語言相關(guān)的環(huán)境變量,使用多種語言的用戶可以修改此環(huán)境變量。
$PS1:是基本提示符,對(duì)于root用戶是#,對(duì)于普通用戶是$,也可以使用一些更復(fù)雜的值。
$PS2:是附屬提示符,默認(rèn)是“”。可以通過修改此環(huán)境變量來修改當(dāng)前的命令符,比如下列命令會(huì)將提示符修改成字符串“Hello,My NewPrompt :) ”。
# PS1=" Hello,My NewPrompt :) "
$IFS:輸入域分隔符。當(dāng)shell讀取輸入時(shí),用來分隔單詞的一組字符,它們通常是空格、制表符和換行符。
$0:shell腳本的名字。
例如,在我的Linux系統(tǒng)中:
$ echo $0
/bin/bash
$#:傳遞給腳本的參數(shù)個(gè)數(shù)。
:shell腳本的進(jìn)程號(hào),腳本程序通常會(huì)用它生成一個(gè)唯一的臨時(shí)文件,如/tmp/tmfile_
例如,在我的Linux系統(tǒng)中:
$ echo $$
31038 #表示當(dāng)前shell進(jìn)程號(hào)為31038
export命令
export命令將作為他參數(shù)的變量導(dǎo)入到子shell中,并使之在子shell中有效。export命令把自己的參數(shù)創(chuàng)建為一個(gè)環(huán)境變量,而這個(gè)環(huán)境變量可以被其他腳本和當(dāng)前程序調(diào)用的程序看見。
4.1 實(shí)驗(yàn) 導(dǎo)出變量
(1)我們先列出腳本程序export2
#!/bin/sh
echo "$foo"
echo "$bar"
(2)然后是腳本export1。在這個(gè)腳本的結(jié)尾,我們調(diào)用export2:
#!/bin/sh
foo="The first meta-syntactic variable"
export bar="The second meta-syntactic variable"
export2
運(yùn)行這個(gè)腳本,將得到如下的輸出:
$ export1
#這是個(gè)空格,是因?yàn)樽兞縡oo在export2中不可用,所以$foo被復(fù)制為空
The second meta-syntactic variable
$
4.2 設(shè)置一個(gè)新的環(huán)境變量WELCOME
$ export WELCOME="Hello!"
$ echo $WELCOME
Hello!
定制環(huán)境變量
環(huán)境變量是和 Shell 緊密相關(guān)的,用戶登錄系統(tǒng)后就啟動(dòng)了一個(gè) Shell 。對(duì)于 Linux 來說一般是 bash ,但也可以重新設(shè)定或切換到其它的 Shell 。根據(jù)發(fā)行版本的情況, bash 有兩個(gè)基本的系統(tǒng)級(jí)配置文件: /etc/bashrc 和 /etc/profile 。這些配置文件包含兩組不同的變量: shell 變量和環(huán)境變量。前者只是在特定的 shell 中固定(如 bash ),后者在不同 shell 中固定。很明顯, shell 變量是局部的,而環(huán)境變量是全局的。環(huán)境變量是通過 Shell 命令來設(shè)置的,設(shè)置好的環(huán)境變量又可以被所有當(dāng)前用戶所運(yùn)行的程序所使用。對(duì)于 bash 這個(gè) Shell 程序來說,可以通過變量名來訪問相應(yīng)的環(huán)境變量,通過 export 來設(shè)置環(huán)境變量。下面通過幾個(gè)實(shí)例來說明。
5.1 使用命令echo 顯示環(huán)境變量
#本例使用echo顯示常見的變量HOME
$ echo $HOME
/home/lqm
5.2 設(shè)置一個(gè)新的環(huán)境變量
$ export HELLO=“Hello!”
$ echo $HELLO
Hello!
5.3 使用 env 命令顯示所有的環(huán)境變量
$ env
SSH_AGENT_PID=1875
HOSTNAME=lqm
SHELL=/bin/bash
TERM=xterm
HISTSIZE=1000
……
5.4 使用set 命令顯示所有本地定義的Shell 變量
$ set
BASH=/bin/bash
……
5.5 使用 unset 命令來清除環(huán)境變量
$ export TEST=“test” # 增加一個(gè)環(huán)境變量 TEST
$ env | grep TEST # 此命令有輸出,證明環(huán)境變量 TEST 已經(jīng)存在了
TEST=test
$ unset $TEST #刪除環(huán)境變量TEST
$ env | grep TEST # 此命令無輸出,證明環(huán)境變量 TEST 已經(jīng)存在了
5.6 使用 readonly 命令設(shè)置只讀變量
如果使用了 readonly 命令的話,變量就不可以被修改或清除了。示例如下:
$ export TEST="Test" # 增加一個(gè)環(huán)境變量 TEST
$ readonly TEST #將環(huán)境變量TEST設(shè)為只讀
$ unset TEST #會(huì)發(fā)現(xiàn)此變量不能被刪除
-bash: unset: TEST: cannot unset: readonly variable
$ TEST="New" #會(huì)發(fā)現(xiàn)此變量不能被修改
-bash: TEST: readonly variable
5.7 用C 程序來訪問和設(shè)置環(huán)境變量
對(duì)于 C 程序的用戶來說,可以使用下列三個(gè)函數(shù)來設(shè)置或訪問一個(gè)環(huán)境變量。
getenv() 訪問一個(gè)環(huán)境變量。輸入?yún)?shù)是需要訪問的變量名字,返回值是一個(gè)字符串。如果所訪問的環(huán)境變量不存在,則會(huì)返回 NULL 。
setenv() 在程序里面設(shè)置某個(gè)環(huán)境變量的函數(shù)。
unsetenv() 清除某個(gè)特定的環(huán)境變量的函數(shù)。
另外,還有一個(gè)指針變量 environ ,它指向的是包含所有的環(huán)境變量的一個(gè)列表。下面的程序可以打印出當(dāng)前運(yùn)行環(huán)境里面的所有環(huán)境變量:
#include stdio.h
extern char**environ;
int main ()
{
char**var;
for (var =environ;*var !=NULL;++var)
printf ("%s \n ",*var);
return 0;
}
5.8 通過修改環(huán)境變量定義文件來修改環(huán)境變量。
需要注意的是,一般情況下,這僅僅對(duì)于普通用戶適用,避免修改根用戶的環(huán)境定義文件,因?yàn)槟菢涌赡軙?huì)造成潛在的危險(xiǎn)。
$vi /etc/bashrc #修改shell變量
$vi /etc/profile #修改環(huán)境變量定義文件
然后編輯你的 PATH 聲明,其格式為:
PATH=$PATH:PATH 1:PATH 2:PATH 3:------:PATH N
你可以自己加上指定的路徑,中間用冒號(hào)隔開。
環(huán)境變量更改后,在用戶下次登陸時(shí)生效,如果想立刻生效,
則可執(zhí)行下面的語句:$ source .bash_profile
5
定制環(huán)境變量需要注意的是,最好不要把當(dāng)前路徑 “./” 放到 PATH 里,這樣可能會(huì)受到意想不到的攻擊。完成后,可以通過 $ echo $PATH 查看當(dāng)前的搜索路徑。這樣定制后,就可以避免頻繁的啟動(dòng)位于 shell 搜索的路徑之外的程序了。
linux環(huán)境變量配置相關(guān)命令及例程:
1. 顯示環(huán)境變量HOME
$ echo $HOME
/home/redbooks
2. 設(shè)置一個(gè)新的環(huán)境變量hello
$ export HELLO="Hello!"
$ echo $HELLO
Hello!
3. 使用env命令顯示所有的環(huán)境變量
$ env
HOSTNAME=redbooks.safe.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命令來清除環(huán)境變量
set可以設(shè)置某個(gè)環(huán)境變量的值。清除環(huán)境變量的值用unset命令。如果未指定值,則該變量值將被設(shè)為NULL。示例如下:
$ export TEST="Test..." #增加一個(gè)環(huán)境變量TEST
$ env|grep TEST #此命令有輸入,證明環(huán)境變量TEST已經(jīng)存在了
TEST=Test...
$ unset $TEST #刪除環(huán)境變量TEST
$ env|grep TEST #此命令沒有輸出,證明環(huán)境變量TEST已經(jīng)存在了
6. 使用readonly命令設(shè)置只讀變量
如果使用了readonly命令的話,變量就不可以被修改或清除了。示例如下:
$ export TEST="Test..." #增加一個(gè)環(huán)境變量TEST
$ readonly TEST #將環(huán)境變量TEST設(shè)為只讀
$ unset TEST #會(huì)發(fā)現(xiàn)此變量不能被刪除
-bash: unset: TEST: cannot unset: readonly variable
$ TEST="New" #會(huì)發(fā)現(xiàn)此也變量不能被修改
-bash: TEST: readonly variable
環(huán)境變量的設(shè)置位于/etc/profile文件
如果需要增加新的環(huán)境變量可以添加下屬行
export path=$path:/path1:/path2:/pahtN
1.Linux的變量種類
按變量的生存周期來劃分,Linux變量可分為兩類:
永久的:需要修改配置文件,變量永久生效。
臨時(shí)的:使用export命令聲明即可,變量在關(guān)閉shell時(shí)失效。
2.設(shè)置變量的三種方法
在/etc/profile文件中添加變量【對(duì)所有用戶生效(永久的)】
用VI在文件/etc/profile文件中增加變量,該變量將會(huì)對(duì)Linux下所有用戶有效,并且是“永久的”。
例如:編輯/etc/profile文件,添加CLASSPATH變量
# vi /etc/profile
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
注:修改文件后要想馬上生效還要運(yùn)行# source /etc/profile不然只能在下次重進(jìn)此用戶時(shí)生效。
在用戶目錄下的.bash_profile文件中增加變量【對(duì)單一用戶生效(永久的)】
用VI在用戶目錄下的.bash_profile文件中增加變量,改變量?jī)H會(huì)對(duì)當(dāng)前用戶有效,并且是“永久的”。
例如:編輯guok用戶目錄(/home/guok)下的.bash_profile
$ vi /home/guok/.bash.profile
添加如下內(nèi)容:
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
注:修改文件后要想馬上生效還要運(yùn)行$ source /home/guok/.bash_profile不然只能在下次重進(jìn)此用戶時(shí)生效。
直接運(yùn)行export命令定義變量【只對(duì)當(dāng)前shell(BASH)有效(臨時(shí)的)】
在shell的命令行下直接使用[export 變量名=變量值] 定義變量,該變量只在當(dāng)前的shell(BASH)或其子shell(BASH)下是有效的,shell關(guān)閉了,變量也就失效了,再打開新shell時(shí)就沒有這個(gè)變量,需要使用的話還需要重新定義。
環(huán)境變量的查看
使用echo命令查看單個(gè)環(huán)境變量。例如:
echo $PATH
使用env查看所有環(huán)境變量。例如:
env
使用set查看所有本地定義的環(huán)境變量。
unset可以刪除指定的環(huán)境變量。
常用的環(huán)境變量
PATH 決定了shell將到哪些目錄中尋找命令或程序
HOME 當(dāng)前用戶主目錄
HISTSIZE 歷史記錄數(shù)
LOGNAME 當(dāng)前用戶的登錄名
HOSTNAME 指主機(jī)的名稱
SHELL 當(dāng)前用戶Shell類型
LANGUGE 語言相關(guān)的環(huán)境變量,多語言可以修改此環(huán)境變量
MAIL 當(dāng)前用戶的郵件存放目錄
PS1 基本提示符,對(duì)于root用戶是#,對(duì)于普通用戶是$