【温故BASH】bash的初始化

当启动bash时,bash将运行初始化文件初始化自己,该过程为:

1.   先执行/etc/profile文件,通过设置这个文件,超级用户可以为全系统内的所有bash用户建立默认特征,如设置PATH环境变量、开机登录等。(这个文件会调用/etc/profile.d目录下的脚本文件,所有这些文件都是开机自动启动,所以不要轻易修改,有一次,我将自己的一个脚本添加进入这个目录,由于脚本有问题,导致开机不断地进入帐号又退出,最后的最后,我只能使用livecd修复了);

2.    Shell再依次执行~/.bash_profile,~/.bash_login,~/.profile时,可以覆盖/etc/profile文件中的默认设置,实现个性化bash环境,可以根据个人爱好,修改成各种样式,比如有的人,开机启动shell,就出现一只猫的模样;

3.    当用户注销,bash执行文件~/.bash_logout文件。这个文件将执行退出会话的一系列操作,比如删除临时文件等。

 

这一系列初始化文件中的命令也是非常有意思的,值得研读。

 

在这些文件中,经常遇见重定向文件描述符。重定向符号为<,>这两种。比较常见的几种文件描述符是:0(标准输入)、1(标准输出)、2(标准错误输出)。

举例来说:

$cat x y 1> hold 2>&1

$cat hold

Cat: x: No such file or directory

This is y

这个例子中,重定向后的流所经过的方向为:2(标准错误输出)-->1(标准输出)-->hold文件。有一点需要注意,2>&1,中间不能有空格。

 

重定向操作符

>filename

除非文件filename已经存在并且设置了noclobber标记,否则标准输出将重定向到该文件filename;如果filename不存在且没有设置nonclobber标记,那么重定向操作将创建该文件

>| filename

即使文件filename存在且设置了noclobber,也重定向到该文件

>

1>的简写

<

0<的简写

>>filename

内容被附加到文件末尾

<&m

从文件描述符m复制标准输入

[n]>&m

从文件描述符m复制标准输出或者文件描述符n(如果命令中指定了n

[n]<&-

关闭标准输入或者文件描述符n(如果指定了n)

[n]>&-

关闭标准输出或者文件描述符n(如果指定了n

 

  菊子曰:我在用着的 博客编辑软件

你可能感兴趣的:(bash)