Linux Shell脚本攻略-使用配置文件定制bash

使用配置文件定制bash

在命令行中输入的绝大部分命令都可以放置在一个特殊的文件中,留待登录或启动新的bash会话时执行。将函数定义、别名以及环境变量设置放置在这种特殊文件中,是一种定制shell的常用方法

应该使用哪些定制文件?
Linux和Unix中能够放置定制脚本的文件不止一个。这些配置文件分为3类;登录时执行的、启动交互式shell时执行的以及调用以及调用shell处理脚本文件时执行的
当用户登录shell,会执行下列文件

/etc/profile, $HOME/.profile, $HOME/.bash_login. $HOME/.bash_profile 

通过图形登录管理器登入的话,是不会执行/etc/profile、$HOME/.profile和$HOME/.bash_profile这3个文件的。这是因为图形化窗口并不会启动shell。当打开终端窗口时才会创建shell,但这个shell也不是登录shell

如果.bash_profile或.bash_login文件存在,则不会去读取.profile文件

交互式shell(X11终端会话)或ssh执行单条命令(如 ssh 192.168.1.1 ls /tmp)时,会读取并执行以下文件
/etc/bash.bashrc $HOME/.bashrc

如果运行如下脚本

$ cat myScript.sh
#!/bin/bash
echo "Running"

不会执行任何配置文件,除非定义了环境变量BASH_ENV

$ export BASH_ENV=~/.bashrc
$ ./myScript.sh

使用ssh运行ssh 192.168.1.100 ls /tmp时,会启动一个bash shell,读取并执行/etc/bash.bashrc和$HOME/.bashrc,但不包括/etc/profile或.profile

如果调用ssh登录会话ssh 192.168.1.100,这会创建一个新的登录bash shell,该shell会读取并执行以下文件

/etc/profile
/etc/bash.bashrc
$HOME/.profile or .bashrc_profile

像传统的Bourne shell、ash、dash以及ksh这类shell,也会读取配置文件。但是这类shell并不支持线性数组(列表)和关联列表。因此要避免在/etc/profile或$HOME/.profile中使用这类不支持的特性

可以使用这些文件定义所有用户所需要的非导出项(如别名)。也可以用来保存个人配置,比如设置需要由其它bash示例继承的路径信息

如果.bash_login或.bash_profile存在,则不会读取.profile。不过其它shell可能会读取该文件

另外还可以保存一些需要在新shell创建时定义的个人信息,如果希望在X11终端会话能使用别名和函数的话,可以将其定义在$HOME/.bashrc和/etc/bash.bashrc中

导出变量和函数会传递到子shell中,但是别名不会。必须将BASH_ENV的值设置为.bashrc或.profile,然后在其中定义别名,这样就可以在shell脚本中使用这些别名

当用户登出会话时,会执行下列文件

$HOME/.bash_logout

例如,远程登录的用户需要在登出的时候清屏

$ cat ~/.bash_logout
# 远程登出之后清屏
Clear
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值