1.什麼是環境變量?
由於linux是一個多用戶的操作系統,所以每個用戶都有自己的專用的運行環境。而這個環境有一組變量所定義,這組變量就是環境變量。用戶可以對自己環境變量進行修改以達到環境的要求。
環境變量是和Shell緊密相關的,它是通過Shell命令來設置的。 環境變量又可以被所有當前用戶所運行的程序所使用。對於bash來說,可以通過變量名來訪問相應的環境變量。(shell)
2.linux中常見的環境變量
PATH:指定命令的搜索路徑
[xjf@localhost /]$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/xjf/bin
HOME:指定用戶的主工作目錄(即用戶登陸到Linux系統中時,默認的目錄)
[xjf@localhost /]$ echo $HOME
/home/xjf
HISTSIZE:指保存歷史命令記錄的條數。
[xjf@localhost /]$ echo $HISTSIZE
1000
LOGNAME:指當前用戶的登錄名。
[xjf@localhost /]$ echo $LOGNAME
xjf
HOSTNAME:指主機的名稱,許多應用程序如果要用到主機名的話,通常是從這個環境變量中的。
[xjf@localhost /]$ echo $HOSTNAME
localhost.localdomain
SHELL:指當前用戶用的是哪種Shell。
[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: [email protected]
> 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),唔哈哈哈!!
本文出自 “Pzd流川楓” 博客,請務必保留此出處http://xujiafan.blog.51cto.com/10778767/1773294