1.CDPATH
如果设置了CDPATH,cd一个目录时,首先查找CDPATH,如果CDPATH指明此目录,刚此目录成为当前工作目录
->pwd
/usr/local/mysql
->cd /root/
->pwd
/root
->echo $CDPATH
/usr/local/
->cd mysql
/usr/local/mysql
->pwd
/usr/local/mysql
2.EXINIT变量保存使用vi编辑器时的初始化选项,例如调用vi时要显示行号,命令为
EXINIT='set nu';export EXINIT
例如:
[root@localhost ~]# EXINIT='set nu';export EXINIT
[root@localhost ~]# vi aa.txt

1
~
~
~
"aa.txt" [New File]
3.HOME
HOME目录,通常定位于passwd文件的倒数第2列,用于保存用户自身文件,设置了HOME目录
可以简单使用cd命令进入它
[root@localhost ~]# HOME=/usr/local/;export HOME
[root@localhost root]# pwd
/root
[root@localhost root]# cd
[root@localhost local]# pwd
/usr/local
4.IFS
IFS用作shell指定的缺省域分隔符.原理上讲域分隔符可以是任意字符,但缺省通常为空格,新行或
tab键.IFS在分隔文件或变量中各域时很有用.下面的例子将IFS设置为冒号,然后echo PATH变量
[root@localhost local]# echo $PATH
/usr/lib/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost local]# export IFS=:
[root@localhost local]# echo $PATH
/usr/lib/qt-3.3/bin /usr/kerberos/sbin /usr/kerberos/bin /usr/local/sbin /usr/local/bin /sbin /bin /usr/sbin /usr/bin /root/bin
[root@localhost local]#
5.logname
此变量保存登录名,应该为缺省设置,但如果没有设置,可以使用下面命令完成
LOGNAME='whoami';export LOGNAME
6.MAIL
MAIL变量保存邮箱路径名,缺省为/var/spool/mail/<login name>.shell周期性检查新邮件,如果邮箱并
不在以上位置,可以用MAIL设置
MAIL=/usr/mail/root;export MAIL
7. MAINCHECK
MAIKCHECK缺省为每60s检查新邮件,但如果不想如此频繁检查新邮件,比如设为每2m,使用命令
MAILCHECK=120;export MAILCHECK
8.MAILPATH
如果有多个邮箱要用到MAILPATH,些变量设置将覆盖MAIL设置
MAILPATH=/var/spool/dave:/var/spool/admin;export MAILPATH
上面的例子中,MAIL检测邮箱dave和admin
9 PATH
PATH变量保存命令或脚本查找的目录顺序。
10 PS1
基本提示符包含shell提示符,缺省对超级用户为#,其他为$。可以使用任何符号作提示符
以下为两个例子
[root@localhost ~]# PS1="START TREK:";export PS1
START TREK:
11 PS2
PS2为附属提示符,缺省符号为>,PS2用于执行多行命令或超过一行的一个命令
12 SHELL
SHELL变量保存缺省SHELL,通常在/etc/passwd中已设置
13 TERMINFO
终端初始化变量保存终端配置文件的位置,通常在/usr/lib/terminfo或/usr/share/terminfo
14 TERM
TERM变量保存终端类型。设置TERM使应用获知终端对屏幕和键盘响应的控制序列类型
常用的有VT100,VT200,VT220-8等
15 TZ
时区变量保存时区值,只有系统管理员才可以更改些设置
SET命令在$HOME下的.profile文件中设置环境变量时,还有另一种方法导出这些变量。使用
set -a指明所有变量直接被导出,不要在/etc/profile中使用这种方法,最好只在自己的$HOME.profile
文件中使用
位置变量参数
如果要向一个sehll脚本传递作息,可以使用位置参数完成此功能。参数相关数目传入脚本,此数目可以
任意多,但只有前9个可以被访问,使用shift命令可以改变这个限制。参数从第一个开始,在第9个结束
每个访问参数前要加$符号。第一个参数为0,表示预留实际脚本名字。无论脚本是否有参数,些值均可用
[root@localhost ~]# sh param.sh Did You See The Full Moon
This is the script name : param.sh
This is the first parameter : Did
This is the first parameter : You
This is the first parameter : See
This is the first parameter : The
This is the first parameter : Full
This is the first parameter : Moon
This is the first parameter :
This is the first parameter :
This is the first parameter :
脚本的内容为
[root@localhost ~]# cat param.sh
#!/bin/bash
echo "This is the script name : $0"
echo "This is the first parameter : $1"
echo "This is the first parameter : $2"
echo "This is the first parameter : $3"
echo "This is the first parameter : $4"
echo "This is the first parameter : $5"
echo "This is the first parameter : $6"
echo "This is the first parameter : $7"
echo "This is the first parameter : $8"
echo "This is the first parameter : $9"
这里只传递了6个参数,7,8,9参数为空,正好预计的那样。
特定变量参数
既然已经知道了如何访问和使用shell脚本中的参数,多知道一点信息也是很有用的。有必要知道运行的
一些相关控制信息,这就是特定变量的由来。共有七个特定变量。见下表
##################################################################################
##################################################################################
特定SHELL变量
##################################################################################
$# 传递到脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数,与位置变量不同,此选项参数可超过9个
$$ 脚本运行的当前进程ID号
$! 后台运行的最后一个进程的进程ID号
$@ 与$#相同,但是使用时加引号,并在引号中返回每个参数
$- 显示shell使用的当前选项,与set命令功能相同
$? 显示最后命令的退出状态。0表示没有错误,其它任何值表明有错误
##################################################################################
##################################################################################