linux bash和bash配置文件

在linux中,shell一般分为两种:登陆shell(login shell)和非登陆shell(non-login shell)

login shell: 登陆shell是需要完整登陆流程才能获取的shell,需要输入用户名和密码。

通过tty终端或者ssh登陆,还有使用su -命令切换(su后面不加-取得的是non-login shell)用户都是取得的登 陆shell。

non-login shell:非登陆shell是在不需要重复输入用户名和密码的情况下取得的shell。

在shell下使用bash命令取得的子shell是非登陆shell,使用su(不添加-)获得的shell是非登陆shell。


一般来说可以使用ps -f来查看login shell和non-login shell。login shell 的程序名称一般是-bash,non-login shell是bash。



login shell和non-login shell的配置文件的区别

在获得shell之前,shell会读取关于shell的配置文件,login shell和non-login shell读取的文件是不一样的

(具体可以参见man bash的INVOCATION部分

login shell

在登陆系统之前,login shell首先会去读取所有用户的公共/etc/profile设定档。该文件中主要是配置一些重要的环境变量:

  • PATH
  • MAIL
  • USER
  • HOSTNAME
  • HISTSIZE
然后/etc/profile文件中还使用source命令或者.(点运算符)将/etc/inputrc,/etc/profile.d/*.sh,/etc/sysconfig/i81n文件导入到当前环境下。

/etc/inputrc:bash的按键功能

/etc/profile.d/*.sh:下面包含很多的.sh文件,用来设定bash颜色,ll是ls的别名等。

/etc/sysconfig/i81n:语系的设置文件


接着login shell会读取个人的设定档,位于个人主目录下:

  1. ~/.bash_profile
  2. ~/.bash_login
  3. ~/.profile

其实bash只会读取其中的一个文件,搜寻的顺序按照1,2,3.当读取到一个文件之后立即停止搜寻。


其中实现是表示实际的读取文件,虚线表示使用source或者点(.)导入当前环境中的文件。


non-login shell

non-login shell只会读取~/.bashrc文件。该文件会导入/etc/bashrc到当前环境下。

  1. 依据不同的UID设置umask的值
  2. 依据不同的UID设置PS1的值
  3. 导入 /etc/profile.d/*.sh 

参考资料

http://linux.vbird.org/linux_basic/0320bash.php#settings_bashrc

http://unix.stackexchange.com/questions/38175/difference-between-login-shell-and-non-login-shell


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值