0
点赞
收藏
分享

微信扫一扫

bash的login shell与non-login shell,以及各自的初始化过程

老北京的热干面 2024-04-11 阅读 7
bash

识别login shell与non-login shell

login shell

可能是以-开头的

[almalinux@VM-AlmaLinux8-tmpl-wanlinwang ~]$ echo $0
-bash # "-" is the first character. Therefore, this is a login shell.

或者以--login启动的bash

[almalinux@VM-AlmaLinux8-tmpl-wanlinwang ~]$ echo $0
bash
[almalinux@VM-AlmaLinux8-tmpl-wanlinwang ~]$ ps -p $$ -o cmd
CMD
bash --login

Non-login shell

[almalinux@VM-AlmaLinux8-tmpl-wanlinwang ~]$ echo $0
bash
[almalinux@VM-AlmaLinux8-tmpl-wanlinwang ~]$ ps -p $$ -o cmd
CMD
bash

login shell的初始化过程

根据bash手册(man bash),不管是interactive或是non-interactive的login shell,首先读取/etc/profile文件,然后按顺序开始查找~/.bash_prifile、~/.bash_login、~/.prifile文件,仅读取第一个找到的文件。

当它退出时,会读取~/.bash_logout与/etc/bash.bash_logout文件。

non-login shell初始化过程

根据bash手册(man bash),interfactive的non-login shell会读取~/.bashrc文件。如果指定了--rcfile <rcfile>则读取rcfile,而不读取~/.bashrc文件。

举报

相关推荐

0 条评论