6 Bash 特性
这部分描写叙述Bash独有的特性。
* 调用Bash : Bash能够接受的命令行选项。
* Bash启动文件 : Bash何时及怎样运行脚本。
* 交互Shell : 什么是交互式shell。
* Bash条件表达式 : 内建命令test用到的表达式元素。
* shell算术 : shell变量的算术。
* 别名 : 给命令还有一个名字。
* 数组 : 数组变量。
* 文件夹堆栈 : 訪问过的文件夹历史。
* 打印提示符 : 控制PS1字符串。
* 限制shell : 对shell运行的很多其它控制模式。
* Bash POSIX 模式 : 使得Bash的行为更接近POSIX标准。
6.1 调用Bash
bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o option] [-O shopt_option] [argument …]
bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o option] [-O shopt_option] -c string [argument …]
bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o option] [-O shopt_option] [argument …]
全部能够用于内建命令set(见 Set内建命令 章节)的单个字符的选项。都能够在调用shell时。作为选项使用。
此外。还有几个多个字符的选项能够使用。为了能够被识别出来,这些选项必须位于命令行的单个字符选项之前。
--debugger
在shell启动前,为调试器指定配置文件。打开扩展调试模式(见 shopt内建命令 章节,中关于shopt内建命令的 extdebug 选项的描写叙述>)。
--dump-po-strings
一个列表,由 ‘$’ 引导的全部双引號包含的字符串,以 GNU gettext PO (便携对象)文件格式打印在标准输出。除了输出格式外。等价于 -D。
--dump-strings
等价于 -D。
--help
在标准输出上显示使用信息。并成功退出。
--init-file filename
--rcfile filename
在交互shell中,从 filename 中运行命令。
(而不是 ~/.bashrc)
--login
等价于 -l 。
--noediting
在交互shell中。不使用GNU Readline 库(见 命令行编辑 章节)从命令行读取。
--noprofile
当Bash以登录shell方式调用时,不加载系统级启动文件 /etc/profile 。或者全部个人初始化文件 ~/.bash_profile, ~/.bash_login, 或者 ~/.profile。
--norc
在交互式shell中不读取初始化文件 ~/.bashrc 。假设使用 sh 调用shell时。默认启用此选项。
--posix
改变Bash中与POSIX标准不同的默认行为,以符合POSIX标准。此选项使得Bash的行为成为POSIX标准的严格超集。见 Bash POSIX 模式 章节,关于Bash POSIX 模式的描写叙述。
--restricted
使得shell成为限制shell(见 限制shell)。
--verbose
等价于 -v 。按原样打印shell的输入行。
--version
在标准输出上显示当前Bash的实例的版本号信息,并成功退出。
还有几个单字符的选项,在调用shell时可用。可是内建命令set中不可用。
-c string
处理选项后,从string中读取和运行命令,然后退出。
全部兴许的參数都赋值给位置參数,从$0開始。
-i
强制shell以交互方式执行。交互方式的shell,请參见 交互shell章节。
-l
使得当前的shell的行为。就像直接由登录调用的。当shell是交互模式时。等价于使用‘exec -l bash’启动登录shell。
当shell不是交互式的时候,则运行登录shell启动文件。 ‘exec bash -l’ 或者 ‘exec bash --login’ ,会以Bash登录shell代替当前的shell。參见 Bash启动文件 章节,关于登录shell的特殊行为的描写叙述。
-r
使得shell成为限制shell。(见 限制shell)
-s
假设出现此选项。或者选项处理后。没有參数了。则从标准输入读取命令。
当调用交互式shell时。此选项同意设置位置參数。
-D
一个列表,由 ‘$’ 引导的全部双引號包含的字符串,被打印在标准输出上。在当前的locale不是C或者POSIX(见 Locale翻译)的时候,这些字符串是对应语言的翻译。
这个选项隐含了 -n 选项,即不运行命令。
[-+]O [shopt_option]
shopt_option 是一个内建命令 shopt 接受的shell选项(见 shopt内建命令)。
假设出现了shopt_option。-O 设置那个选项,而 +O 取消设置。
假设没有给定 shopt_option,则在标准输出上打印能被shopt接受的shell选项的名字和值。假设调用选项是 +O,则输出的格式是能够重用为输入的。
--
--符号标识了选项的结束,及取消进一步的选项处理。
全部位于--之后的參数,都被视为文件名称和參数。
登录shell是參数0的第一个字符是 ‘-’ 。或者使用 --login选项调用的shell。
交互式shell是启动參数中没有选项參数。除非指定了 -s 參数,没有指定 -c 选项,它的输入和输出都指向终端(由isatty(3)确定),或者带 -i 选项启动。很多其它信息,请參见 交互式shell 章节。
假设选项处理部分后面还有參数。而且没有 -c 或者 -s 选项,则第一个參数被当作是包括shell命令的文件名称(见 shell脚本)。
当Bash以此种方式调用时。$0 被设定为文件名称,位置參数都设置为兴许的參数。Bash从此文件里读取和运行命令,然后退出。
Bash的退出状态,是脚本中最后一个被运行的命令的退出状态。
假设没有命令运行,则退出状态为0。