名词定义
login shell
取得 bash 时需要完整的登陆流程的,就称为 login shell。举例来说,你要由 tty1 ~ tty6 登陆,需要输入使用者的帐号与密码,此时取得的 bash 就称为「 login shell 」比如使用 「su -「 命令,或者用 ssh 连接到某一个服务器上,该用户取得的 bashnon-login shell
取得 bash 接口的方法不需要重複登陆的举动该模式下是不会自动去运行任何的 profile 文件。interactive
可以透过命令符去执行交互式 shell 顾名思义就是用来和用户交互的,提供了命令提示符可以输入命令。该模式下会存在一个叫 PS1 的环境变量,如果还不是 login shell 的则会去 source /etc/bash.bashrc 和 ~/.bashrc 文件non-interactive
像是gitHub action那样靠yml档案写好的script去执行non-interactive shell 则一般是通过 bash -c 「CMD」 来行的 bash.四种方式区别
流程:
1. non-login shell 读取流程
stept1. 读取~/.bashrc
该bash配置文件仅会读取 ~/.bashrc(root和一般使用者看到会不同),它内容主要是去加载 /etc/bashrc 而他里面也没有看到sbin相关的东西
「使用者的个人设置」读取/etc/bashrcstept2. 读取/etc/bashrc
「整体的环境设置」「依据不同的 UID 规範出 umask 的值;」「依据不同的 UID 规範出提示字符 (就是 PS1 变量);」「调用 /etc/profile.d/*.sh 的设置」可以在这个文件中修改我们喜欢的 shell 配色方案和环境变量等等non-login shell 的选项(option)
--rcfile <file>
强制读取并执行档案的command,而不读取/etc/bashrc 及 ~/.bashrc.
2. login shell 读取流程
step1. 读取/etc/profile
PATH:会依据 UID 决定 PATH 变量要不要含有 sbin 的系统指令目录;MAIL:依据帐号设置好使用者的 mailbox 到 /var/spool/mail/帐号名;USER:根据使用者的帐号设置此一变量内容;HOSTNAME:依据主机的 hostname 指令决定此一变量内容;HISTSIZE:历史命令记录笔数。CentOS 7.x 设置为 1000 ;umask:包括 root 默认为 022 而一般用户为 002CentOS 7.x 默认调用注意:「这是系统整体的设置,你最好不要修改这个文件;」
/etc/profile.d/*.sh
有read权限的user才能读进来/etc/profile.d/.sh 的内容
bash 操作接口的颜色语系llls指令的命令别名vi 的命令别名which 的命令别名
**关于 /etc/profile.d/.sh 的内容:**
/etc/profile.d/lang.sh --> /etc/locale.conf
-bash 默认使用何种语系的重要配置文件! 文件里最重要的就是 LANG/LC_ALL
/etc/profile.d/bash_completion.sh --> /usr/share/bash-completion/completions/*