shell内部变量

来源:互联网 发布:抵押贷款支持证券 知乎 编辑:程序博客网 时间:2024/06/05 17:13
$BASH            Bash的二进制程序文件的路径
$BASH_ENV        这个环境变量会指向一个Bash的启动文件,当一个脚本被调用的时候,这个启动文件将会被读取
$BASH_SUBSHELL        用来提示子shell的层次。
$BASH_VERSINFO[n]    一个含有6个元素的数组,它包含了所安装的Bash的版本信息。
0    主版本号
1    次版本号
2    补丁次数
3    编译版本
4    发行状态
5    结构体系
$BASH_VERSION        安装在系统上的Bash版本号
$DIRSTACK        在目录栈中最顶端的值(受到pushd和popd的影响)。这个内建变量与dirs命令相符,但是dirs命令会显示目录栈的整个内容。
$EDITOR            脚本所调用的默认编辑器,通常是vi或者是emacs
$EUID            “有效”用户ID。不管当前用户被假定成什么用户,这个数都用来表示当前用户的标识号
$FUNCNAME        当前函数的名字
$GLOBIGNORE        一个文件名的模式匹配列表,如果在通配中匹配到的文件包含有这个列表中的某个文件,那么这个文件将被从匹配到的结果中去掉。
$GROUPS            目前用户所属的组。这是一个当前用户的组id列表(数组),与记录在/etc/passwd文件中的内容一样。
$HOME            用户的home目录
$HOSTNAME        hostname放在一个初始化脚本中,在系统启动的时候分配一个系统名字。
$HOSTTYPE        主机类型,用来识别系统硬件。
$IFS            内部域分隔符。这个变量用来决定Bash在解释字符串时如何识别域,或者单词边界。
$IFS默认为空白(空格,制表符,和换行符),但这是可以修改的,比如,在分析都好分割的数据文件时,就可以设置为逗号。主义$*使用的是保存在$IFS中的第一个字符。
$IGNOREEOF        忽略EOF:告诉shell在log out之前要忽略多少文件结束符。
$LC_COLLATE        常在.bashrc或/etc/profile中设置,这个变量用来控制文件名扩展和模式匹配的展开顺序。
$LC_CTYPE        用来控制通配和模式匹配中的字符串解释
$LINENO            用来记录自身在脚本中所在的行号。
$MACHTYPE        机器类型,标识系统的硬件
$OLDPWD            之前的工作目录
$OSTYPE            操作系统类型
$PATH            可执行文件的搜索路径,一般/usr/bin/,/usr/X11R6/bin/,/usr/local/bin,等等。当给出一个命令时,shell会自动生成一张hash表,并且在这张hash表中按照path变量中所列出的路径来搜索这个可执行命令。路径会存储在环境变量中,$PATH变量本身就一个以冒号分割的目录列表。通常情况下,系统都是在/etc/profile和~/.bashrc中存储$PATH的定义。PATH=${PATH}:/opt/bin将会把目录/opt/bin附加到当前目录列表中。在脚本中,这是一种把目录临时添加到$PATH中的权宜之计。当这个脚本退出时,$PATH将会恢复之前的值(一个子进程,比如说一个脚本,是不能够修改父进程的环境变量的,在这里也就是不能够修改shell本身的环境变量)
$PIPESTATUS        这个数组变量将保存最后一个运行的前台管道的退出状态码。这个退出状态码和最后一个命令运行的退出状态码并不一定相同。$PIPESTATUS[0]保存管道中第一个命令的退出状态码。$PIPESTATUS[1]保存第二个命令的退出状态码,一次类推。
$PPID            进程的$PPID就是这个进程的父进程的进程ID(pid)。
$PROMPT_COMMAND        这个变量保存了在主提示符$PS1显示之前需要执行的命令
$PS1            这是主提示符,可以在命令行中见到它
$PS2            第二提示符,当你需要额外输入的时候,你就会看到它。默认显示">"。
$PS3            第三提示符,它在一个select循环中显示。
$PS4            第四提示符,当你使用-x选项来调用脚本时,这个提示符会出现在没行输出的开头。默认显示"+"
$PWD            工作目录(你当前所在的目录)这与内建命令pwd作用相同
$REPLY            当没有参数变量提供给read命令的时候,这个变量会作为默认变量提供给read命令。也可以用于select菜单,但是只提供所选择变量的编号,而不是变量本身的值。
$SECONDS        这个脚本已经运行的时间(以秒为单位)
$SHELLOPTS        shell中已经激活的选项的列表,这是一个只读变量
$SHLVL            Shell级别,就是Bash被嵌套的深度。如果是在命令行中,那么$SHLVL为1,如果在脚本中,则为2
$TMOUT            如果$TMOUT环境变量被设置为非零值time的话,那么经过time秒后,shell提示符将会超时。这将会导致登出(logout)
$UID            用户ID号。当前用户的用户标识号,记录在/etc/passwd文件中


位置参数
$0,$1,$2,等等    位置参数,从命令行传递到脚本,或者传递给函数,或者set给变量
$#            命令行参数的个数
$*            所有位置参数都被看作为一个单词
$@            与$*相同,但是每个参数都是一个独立的引用字符串。
$-            传递给脚本的标记(使用set命令)
$!            运行在后台的絊后一个作业的PID(进程ID)
$_            保存之前执行的命令的最后一个参数的值
$?            命令,函数,或者是脚本本身的退出状态码
$$            脚本自身的进程ID