[Linux]Shell变量


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

相关内容