1.什麼是環境變量?
linux
因爲linux是一個多用戶的操做系統,因此每一個用戶都有本身的專用的運行環境。而這個環境有一組變量所定義,這組變量就是環境變量。用戶能夠對本身環境變量進行修改以達到環境的要求。
shell
環境變量是和Shell緊密相關的,它是經過Shell命令來設置的。 環境變量又能夠被全部當前用戶所運行的程序所使用。對於bash來講,能夠經過變量名來訪問相應的環境變量。(shell)bash
2.linux中常見的環境變量dom
PATH:指定命令的搜索路徑ide
[xjf@localhost /]$ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/xjf/bin
HOME:指定用戶的主工做目錄(即用戶登錄到Linux系統中時,默認的目錄)spa
[xjf@localhost /]$ echo $HOME /home/xjf
HISTSIZE:指保存歷史命令記錄的條數。操作系統
[xjf@localhost /]$ echo $HISTSIZE 1000
LOGNAME:指當前用戶的登陸名。it
[xjf@localhost /]$ echo $LOGNAME xjf
HOSTNAME:指主機的名稱,許多應用程序若是要用到主機名的話,一般是從這個環境變量中的。io
[xjf@localhost /]$ echo $HOSTNAME localhost.localdomain
SHELL:指當前用戶用的是哪一種Shell。class
[xjf@localhost /]$ echo $SHELL /bin/bash
LANG/LANGUGE:和語言相關的環境變量,使用多種語言的用戶能夠修改此環境變量。
[xjf@localhost /]$ echo $LANG zh_CN.UTF-8
MAIL:指當前用戶的郵件存放目錄。
[xjf@localhost /]$ echo $MAIL /var/spool/mail/xjf
PS1:命令基本提示符,對於root用戶是#,對於普通用戶是$。
[xjf@localhost /]$ echo $PS1 [\u@\h \W]\$
PS2:附屬提示符,默認是「>」。
[xjf@localhost /]$ echo $PS2 >
3.修改環境變量
/*1.顯示環境變量*/ [xjf@localhost /]$ echo $HOME /home/xjf /*2.設置一個新的環境變量*/ [xjf@localhost /]$ echo $NAME [xjf@localhost /]$ export NAME="haotian" [xjf@localhost /]$ echo $NAME haotian /*3.顯示全部的環境變量*/ [xjf@localhost /]$ env /*4.顯示本地定義的shell變量*/ [xjf@localhost /]$ set /*5.清除環境變量*/ [xjf@localhost /]$ echo $NAME haotian [xjf@localhost /]$ unset NAME [xjf@localhost /]$ echo $NAME /*6.設置只讀環境變量*/ [xjf@localhost /]$ readonly NAME [xjf@localhost /]$ unset NAME bash: unset: NAME: cannot unset: readonly variable [xjf@localhost /]$ export NAME="diudiudiu" bash: NAME: readonly variable //設置只讀變量後,這個變量就不容許修改,若是你仍是想修改的話,就能夠先切換到root底下,而後 //在切回來就能夠了(也能夠退出當前用戶,而後再進來) [xjf@localhost ~]$ unset NAME [xjf@localhost ~]$ export NAME="diudiudiu" [xjf@localhost ~]$ echo $NAME diudiudiu [xjf@localhost ~]$ readonly NAME [xjf@localhost ~]$ unset NAME -bash: unset: NAME: cannot unset: readonly variable [xjf@localhost ~]$ exit logout [root@localhost ~]# su - xjf [xjf@localhost ~]$ unset NAME [xjf@localhost ~]$ echo $NAME [xjf@localhost ~]$ export NAME="haotian" [xjf@localhost ~]$ echo $NAME haotian
爲何這個直接退出,它就能夠改了,因爲在linux變量種類若是按生存週期分能夠分爲兩類:
1.永久的:須要修改配置文件,變量永久有效
2.臨時的:使用export定義的變量,變量在用戶改變時失效。
最後看下面這個例子:
[xjf@localhost Test_1]$ cat a.c /************************************************************************* > File Name: a.c > Author: xjf > Mail: doo_magic@126.com > Created Time: Sat 14 May 2016 12:07:45 PM CST ************************************************************************/ #include<stdio.h> int main() { printf("First linux program\n"); return 0; } [xjf@localhost Test_1]$ gcc -o a a.c [xjf@localhost Test_1]$ ./a First linux program [xjf@localhost Test_1]$ a -bash: a: command not found [xjf@localhost Test_1]$ gcc -o a.exe a.c [xjf@localhost Test_1]$ a.exe -bash: a.exe: command not found //上面這個可執行程序a和a.exe爲何不能執行,./a就能夠執行呢??
緣由是可執行程序所在的目錄沒有包含在環境變量PATH的值中。在這種狀況下,用戶必須給出可執行文件的完整路徑名才能運行指定的可執行文件。在上面的狀況中,圓點符號(.) 表示當前目錄。接下來看下面方式:
[xjf@localhost Test_1]$ a -bash: a: command not found [xjf@localhost Test_1]$ a.exe -bash: a.exe: command not found [xjf@localhost Test_1]$ /home/xjf/test/Test_1/a First linux program [xjf@localhost Test_1]$ /home/xjf/test/Test_1/a.exe First linux program //就能夠完美執行了
也能夠經過修改環境變量的方式來達到目的:
[xjf@localhost Test_1]$ ll total 20 -rwxrwxr-x. 1 xjf xjf 4691 May 14 12:27 a -rw-rw-r--. 1 xjf xjf 347 May 14 12:08 a.c -rwxrwxr-x. 1 xjf xjf 4691 May 14 12:11 a.exe [xjf@localhost Test_1]$ a -bash: a: command not found [xjf@localhost Test_1]$ a.exe -bash: a.exe: command not found [xjf@localhost Test_1]$ pwd /home/xjf/test/Test_1 [xjf@localhost Test_1]$ export PATH=$PATH:/home/xjf/test/Test_1 [xjf@localhost Test_1]$ a First linux program [xjf@localhost Test_1]$ a.exe First linux program [xjf@localhost Test_1]$ ./a First linux program [xjf@localhost Test_1]$ ./a.exe First linux program
好(you)神(need)奇(weight),唔哈哈哈!!