env
说明:用于显示和修改环境变量。
例:显示所有环境变量
$ env
set
说明:除显示系统的默认值外,还会显示自定义变量
echo
说明:显示指定变量的值。
例:显示PATH环境变量
$ echo $PATH
declare
语法:declare [-afirx]
说明:声明变量
参数:
-a :定义为数组 array
-f :定义为函数 function
-i :定义为整数 integer
-r :定义为只读
-x :定义为通过环境输出变量
范例:
[test @test test]# declare -i a=3
[test @test test]# declare -i b=5
[test @test test]# declare -i c=$a*$b
[test @test test]# echo $c
15 <==变成数字了。
变量设定规则
1. 变量与变量内容以等号“=”连结;
2. 等号两边不能直接接空格符;
3. 变量名称只能是英文字母与数字,其中数字不能是开头字符;
4. 若有空格符,可以使用双引号或单引号将变量内容结合起来,但要特别留意,双引号内的特殊字符可以保留变量特性,单引号内的特殊字符则仅为一般字符;
5. 必要时以跳转字符“\”将特殊符号(如Enter,$,\,空格符,'等)变成一般符号;
6. 在一串指令中,还需要借助其他指令提供的信息,这时可以使用quote“` command`”;
7. 若该变量为扩增变量内容时,则需以双引号及$变量名称(如"$PATH":/home)继续累加内容;
8. 若该变量需要在其他子程序执行,则以export使变量可以动作,如export PATH;
9. 通常大写字符为系统预设变量,自定义变量可以使用小写字符,方便判断(纯粹依照用户兴趣与嗜好);
10. 取消变量的方法为:$ unset <变量名>。
例一
一般变量设定:
[root @test root]# 12name=VBrid <==错误。因为变量开头不能是数字
[root @test root]# name = VBird <==错误。因为等号两边不能直接接空格符
[root @test root]# name=VBird <==正确。echo $name显示VBird
比较重要的环境变量。
ENV=/root/.bashrc <==用户自定义环境变量的配置文件
HISTSIZE=1000 <==当前的指令记忆数量
HOME=/root <==登入者的根目录
HOSTNAME=test.linux.org <==这台主机的名字
HOSTTYPE=i386 <==这台主机的硬件等级大致状态(i386,i686..)
INPUTRC=/etc/inputrc <==一些shell加载的数据文件设定处
LANGUAGE=C <==默认语言的资料
LANG=zh_TW.Big5 <==与LANGUAGE类似,这个则是各个linux版本常用的默认语言变量,由于我的Mandrake使用中文安装,所以默认语言是中文,即zh_TW.Big5。要修改这个变量,可以在/etc/ sysconfig/i18n中修改。下面的LC_xxx均是与默认语言有关的变量,其中比较有趣的是LC_TIME,如果在文字界面下,最好将LC_TIME改成美式日期显示方式,这样就不会有乱码
LC_COLLATE=zh_TW.Big5
LC_CTYPE=zh_TW.Big5
LC_MESSAGES=zh_TW.Big5
LC_MONETARY=zh_TW.Big5
LC_NUMERIC=zh_TW.Big5
LC_TIME=en
LOGNAME=root <==登入者的账号,这里会有一堆user和USERNAME等,是因为如果您以一般身份使用远程登入,再以su换成root时,您的很多设定会不太一样,所以才会有这么多的user数据
MACHTYPE=i586-mandrake-linux-gnu <==主机的硬件配备等级i586为P MMX等级,K7 及PIII之后的就是i686等级
MAIL=/var/spool/mail/root <==您的邮件文件
OSTYPE=linux-gnu <==操作系统的形式(linux-gnu)
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin: /usr/local/sbin
PS1=[\u@\h \W]\$ <==提示符的样式
PWD=/root <==当前所在路径
TERM=xterm <==终端机形式
USERNAME=root <==和刚才的LOGNAME类似
USER=root <==用户账号
单双引号
一般字符,而不会有特殊符号。我们以下面的例子说明:假设您定义了一个变量,
name=VBird,现在想以name变量定义myname显示VBird its me这个内容,要如何定义?
[root @test root]# name=VBird
[root @test root]# echo $name
VBird
[root @test root]# myname="$name its me"
[root @test root]# echo $myname
VBird its me
[root @test root]# myname='$name its me'
[root @test root]# echo $myname
$name its me
在引用他人的文件或其他程序时,export相当重要,尤其在需要两三个文件互相引用时,如果忘记设定export,那么不同文件中的相同变量值将需要一再地重复设定。所以,只要在头一个文件使用export,那么后续的文件引用该变量时,将会自动读取该变量内容。