登录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命令.

参考文献

  1. 交互式shell和非交互式shell、登录shell和非登录shell的区别