bash shell 内置参数
2013-04-04 23:08:24 阿炯

PPID:该bash的呼叫者process ID.
PWD:目前的工作目录。每次使用cd命令更改目录时,该值也会随之变化。
OLDPWD:上一个工作目录。
REPLY:当read命令没有参数时,直接设在REPLY上。
UID:User ID,密码文件账号中的第三个域值
EUID:Effective User ID,有效的使用者ID。表示当前用户有效的用户ID号,当启动Shell时,根据/etc/passwd 文件中的用户项进行赋值。
BASH:该变量包含了Bash命令的完整路径。其值通常为/bin/bash。
BASH_VERSION:表示当前Bash命令版本的一个数字。
BASHPID:当前bash进程的进程号。
SHLVL:每次有Bash执行时,数字加一。
RANDOM:每次这个参数被用到时,就会产生一个乱数在RANDOM上。
SECONDS:从这个Shell一开始启动後的时间。
LINENO:Script的行数。
HISTCMD:历史记录数。
OPTARG:getopts处理的最後一个选项参数。
OPTIND:下一个要由getopts所处理的参数号码。
HOSTTYPE:机器种类。
OSTYPE:作业系统名称,用来识别当前操作系统。对于Fedora Linux根据所使用的Shell类型的不同,其值可以是linux或者linux-gnu(此外,Bash 也可以在其他操作系统上运行)。
IFS:Internal Field Separator。
PATH:命令搜寻路径。该变量值为冒号分隔的目录列表,主要用来查找需要输入的命令的相关路径集,不同用户可能不同。
PATH="/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin:."
HOME:目前使用者的home directory;
CDPATH:cd命令的搜寻路径。
ENV:如果这个参数被设定,每次有shell script被执行时,将会执行它所设定的档名做为环境设定。
MAIL:如果这个参数被设定,而且MAILPATH没有被设定,那麽有信件进来时,bash会通知使用者。
MAILCHECK:设定多久时间检查邮件一次。
MAILPATH:一串的邮件检查路径。
MAIL_WARNING:如果有设定的话,邮件被读取後,将会显示讯息。
PS1:提示讯息设定,内定为"bash$ "。该变量设置了Shell 提示符的值。可以将许多项目读取到提示符中(比如日期、时间、用户名、主机名等)。但有时一条命令需要额外的提示符,此时可以使用变量PS2、PS3 等进行设置。
PS2:第二提示讯息设定,内定为">; "。
PS3:select命令所使用的提示讯息。
PS4:执行追踪时用的提示讯息设定,内定为"+ "。
HISTSIZE:命令历史记录量,内定为500。
HISTFILE:历史记录档,内定~/.bash_history。
HISTFILESIZE:历史记录档行数最大值,内定500。
OPTERR:如果设为1,bash会显示getopts的错误。
PROMPT_COMMAND:如果设定的话,该值会在每次执行命令前都显示。
IGNOREEOF:将EOF值当成输入,内定为10。
TMOUT:如果设为大于零的数字,该值被解译为输入等待秒数。表示Shell可以空闲的秒数,在秒数到达后 Shell 将会退出。该安全功能能够减少无人值守的Shell被未授权用户访问的可能性(该变量必须在登录Shell中设置,实际上导致Shell注销用户)。
FCEDIT:fc命令的内定编辑器。
FIGNORE:请详见READLINE。
INPUTRC:readline的startup file,内定~/.inputrc

CDPATH:cd命令的搜寻路径
FCEDITOR:fc命令默认的比较器,如果设置了该变量,则表示fc命令用来编辑history命令的文本编辑器。如果没有设置则使用vi命令。
FIGNORE:在进行命令补齐时,如若想忽略的扩展名列表
FUNCNAME:在函数执行时,此变量内容即为函数式的名称
GLOBIGNORE:
GROUPS:这是一个数组变量,包含了当前用户所属组的组ID号
HISTCMD:当前指令执行完后,在历史指令中的排列编号;该变量返回历史命令列表中当前命令的数量
HISTCONTROL:控制指令是否存入历史脚本文件中
HISTFILE:设定历史脚本文件的路径文件名,表示历史命令文件的位置,该位置通常位于SHOME/bash_ history。
HISTFILESIZE:历史脚本文件存储指令的最大行数,当达到该数量时,最早的命令将被丢弃;其默认值为1000。
HISTIGNORE:不存入历史脚本文件的指令样式
HISTSIZE:历史脚本文件存储指令的最大行数
HOME:用户的家目录位置,即每次登录后或者输入带有任何选项的cd命令时的当前工作目录。
HOSTFILE:包含自动补齐主机名的数据文件
HOSTNAME:当前主机的主机名称
HOSTTYPE:主机架构形态,该变量值描述了Linux系统正在运行的计算机系统结构。对于与Intel兼容的PC,其值为i[3-6]86 或者与i386-linux相类似的值。而对于AMD 64位计算机,其值为x86_64。
IFS:定义字段分割符号
INPUTRC:设定命令行函数式库readline的启动配置文件,可覆盖~/.inputrc的设定
LANG:目前语系的名称
LC_ALL:目前的locale
LC_COLLATE:locale字母排序
LC_CTYPE:locale字符分类
LC_MESSAGES:locale信息显示的转换
LINENO:script已执行到的行数
MACHTYPE:描述主机形态的GNU格式,如像:i486-pc-linux-gnu
MAIL:邮件文件的名称,表示邮箱文件的位置。该文件通常是/ar/spoo/mail目录中的用户名。
MAILCHECK:每隔多久就检查一次邮件,默认是60秒
MAILPATH:设定检查邮件的文件名,如果有两个以上,用:分割
PWD:当前工作目录
OLDPWD:前一个工作目录,表示修改当前工作目录之前的工作目录
OPTARG:使用getopts处理选项时,取得的选项的参数。
OPTIND:使用getopts处理选项时,选项的索引值
OPTERR:如果把OPTERR设置为1,则getopts发生错误时,不管选项第一个字符是否为:,仍然显示错误信息。
OSTYPE:执行bash的操作系统种类。
PATH:命令的搜寻路径
PPID:父进程的进程编号,表示启动了当前Shell的命令的进程ID(例如,包含了Shell 的Terminal窗口)。
PROMPT_COMMAND:可以将该变量设置为一个命令名,以便在每次Shell提示符显示之前运行该命令;如果将该变量设置为PROMPT_COMMAND=date,那么在提示符出现之前会列出当前日期时间。
RANDOM:随机函数,返回0~32767之间的随机数;访问该变量将会生成一个随机数。
REPLY:select和read没有设定读取变量时,默认的变量名称为REPLY。
SECONDS:目前bash shell已执行的时间,表示自Shell启动之后的秒数。
SHELL:shell文件的路径
SHELLOPTS:本变量的内容是经过set -o 设定为已开启的shell选项,以:分隔
SHLVL:子shell的层级数;表示与当前Shell会话相关联的Shell级别数。当登录到Shell时,SHLVL 为1。每执行一次Bash命令后(例如,使用su命令成为一名新用户,或者输入bash),该级别数将递增。
TIMEFORMAT:设定time统计运行时间的格式
TMOUT:如果tmout的大于0,则bash会等待tmout秒后,自动结束目前的bash shell;上文有提及。


位置变量

参数$0代表脚本名称

参数$#统计脚本参数的个数

参数$1...$9代表输入第一至第九个参数

参数$?代表脚本返回值:正确返回0,不正确返回非0

参数$*代表将命令行输入的所有参数作为一个字符串处理

参数$@代表将命令行输入的所有参数看作多个独立的变量处理

正常情况下,$@和$*在正常使用的时候是没有区别的,但是当在for循环中就显示出差异了,因此在工作中还需要注意区分才是,同时在使用的时候需要用双引号引起来。

$*与$@的区别

shift代表参数号偏移

位置变量的使用一般体现在脚本中,其使得在脚本中的命令可以调用运行脚本时不同位置的参数,参数一般使用空格分隔,$0代表当前Shell程序的文件名称,$1代表运行Shell程序时的第一个参数,$2为第二个参数,依此类推(范围为$1~$9)。使用Shell位置变量有助于我们查看很多相关信息,$#代表Shell程序所有参数的个数;$*与$@均代表所有参数的内容,区别是$*将所有的参数作为一个整体,而$@将所有的参数分别作为个体看待;$$代表当前进程的ID号码,$?表示程序的退出代码(返回0一般代表命令执行成功,非0代表命令执行失败)。

S1-$n:位置参数
$*:代表所有的位置参数,并且视为一个字符串
$@:代表所有的位置参数,代表各位置参数组成的串行
$#:位置参数的个数
$_:bash的绝对路径 或者 上一个命令执行时,最后一个位置参数
$?:上一个命令执行结束后的传回值,0表示执行成功,非0表示执行有误
$$:目前bash shell的进程编号
$!:上一个后台程序的进程编号
$-:bash shell目前使用的功能选项

notify:如果设定了,bash立即报告被终结的背景程式。
history_control, HISTCONTROL:history使用。
command_oriented_history:存入多行指令。
glob_dot_filenames:如果设定了,bash将会把"."包含入档案路径中。
allow_null_glob_expansion:如果设定了,bash允许路径明称为null string。
histchars:history使用。
nolinks:如果设定了,执行指令时,不会跟随symbolic links。
hostname_completion_file, HOSTFILE:包含与/etc/hosts相同格式的档名。
noclobber:如果设定了,Bash不会覆写任何由">;"、">;&"及"<>;"所操作的档案。
auto_resume:请见任务控制一节。
no_exit_on_failed_exec:如果该值存在,非互动的shell不会因为exec失败而跳出。
cdable_vars:如果启动,而cd命令找不到目录,可切换到参数形态指定的目录下。