登录Shell和交互Shell的区别
遇到两个shell的概念:
交互式登录shell
和交互式非登录shell
。要理解上面两个术语,先要理清两个概念登录shell
和交互shell
###登录shell(Login shell)
从tty下登录(login)进去的shell称为登录shell
,在已经登录的shell执行bash或者su命令启动的shell称为非登录shell
(non-login shell)注意:通过命令su -l [username]
可以进入登录shell
,另外在图形界面(如Gnome)打开的命令行窗口(terminal)属于非登录shell
。
配置文件
登录shell和非登录shell启动的时候会装载不同的配置文件。
登录shell
/etc/profile
~/.bash_profile
~/.profile
非登录shell
/etc/bashrc
或者/etc/bash.bashrc
~/.bash_rc
交互shell(Interactive Shell)
交互就是REPL
(Read-Eval-Print-Loop)。通俗的说,就是你输入点什么,它执行,然后你查看输出结果,周而复始。我们通常使用的shell都是交互shell
。而非交互shell
常见的场景是执行bash脚本的时候bash script.sh
。shell以一种静默的方式逐行连续执行脚本。
登录shell
和交互shell
是两个不同纬度的概念,所以组合就有所谓的交互式登录shell
和交互式非登录shell
。
如何退出交互shell
对于非登录shell
执行exit
命令,对于登录shell
执行logout
命令.