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