Shell變量分為環境變量和自定義變量,這兩則的差異在於該變量能否被子進程使用,看下面的一個示 意圖:
如果是環境變量,子進程中還可以繼續使用,但如果是自定義的變量,子進程裡將失效。
用env查看環境變量
常見的環境變量如下:
1)HOME:用戶的主目錄(cd ~)
2)SHELL:用戶的默認shell
3)HISTSIZE:歷史記錄條數
4)MAIL:郵件信箱文件
5)PATH:執行文件查找路徑
6)LANG:語系
用set查看環境變量和自定義變量
比較重要的自定義變量有:
1)PS1:提示符設置
2)$:本shell的PID
3)?:上個執行命令的返回碼
用export把自定義變量變成環境變量
上面我們提到過,只有環境變量才能被子進程使用,所以如果你想讓某個自定義變量可以被子進程使 用,就使用export命令把它變成環境變量。
變量的顯示和取消 - echo unset
echo用於顯示變量的值,如:
# echo $SHELL
/bin/bash
unset用於取消變量,如:
# export a=1 # echo $a 1 # unset a # echo $a -- 返回空
語系變量 - locale和LANG
 
我們通過locale命令可以獲得當前的語系編碼,如下所示:
# locale LANG=en_US.UTF-8 LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL=
在實際使用中,其實只要設置LANG變量即可。默認的語系變量由以下文件定義:
# cat /etc/sysconfig/i18n
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb- sun16"
變量的聲明 - declare
由declare聲明的變量默認是自定義的變量,如果加上-x參數表示定義為環 境變量(同export的效果一樣)
對用戶的資源限制 - ulimit
執行ulimit -a即可列出當前用戶資源使用限制情況:
# ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 29823 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 65535 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 10240 cpu time (seconds, -t) unlimited max user processes (-u) 1024 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited