shell 启动
现在的Linux操作系统一般都支持两种方式启动:文本模式和图形模式。文本模式一般应用于服务器这种不需要图形界面的场景,用户远程登录服务器,通过命令行与服务器进行交互;而普通的PC桌面操作系统一般会运行在图形模式下,通过桌面管理器和图标,方便用户通过鼠标点击进行交互。
根据操作系统这两种不同的启动方式,shell的启动一般分为两种,以Bash为例,可以分为两种:
- 文本模式下的Bash启动
- 图形模式下的Bash启动
文本模式下的Bash启动
在Ubuntu为例,系统上电后,Linux内核初始化一系列组件,成功启动后,会开启第一个用户进程:init进程,然后在init进程中继续运行用户登录login程序,用户输入的用户名和密码验证通过后,会根据脚本中的配置,启动默认的shell解释器:Bash,此时你就会看到一个交互式的命令环境,Bash会不断地解释和运行用户输入的各种命令。
在Ubuntu-20.04环境下,敲击快捷键Ctrl+Alt+F3,就会进入Ubuntu的文本模式,登录tty3终端,输入用户名和密码后,就可以进入到Bash的交互环境,等待用户输入各种命令运行:
图形模式下的Bash启动
现在的桌面操作系统一般模式是在图形模式下启动,内核初始化完成后,会启动一个桌面管理器,加载桌面环境和各种应用程序图标,用户通过鼠标点击来运行不同的程序。
为了能在图形模式下运行Bash,不同的操作系统一般都会提供了虚拟终端模拟软件,如在Ubuntu-20.04下,就有一个叫作Terminal的虚拟终端软件:
点击运行,就会运行这个Terminal终端程序,并启动默认的shell解释器:Bash
使用pstree命令查看进程树,可以看到虚拟终端terminal和Bash之间的关系:
# pstree
gnome-terminal-─┬─bash───pstree
通过进程关系我们可以看到,当用户点击terminal图标启动虚拟终端工具后,Linux是以gnome-terminal进程来运行这个终端工具的,然后基于整个进程创建一个子进程bash来运行Bash shell。
在 Ubuntu-20.04 下,使用 Ctrl+Alt+F2 和 Ctrl+Alt+F3快捷键,可以在图形模式和文本模式下切换,通过不同的终端来启动Bash。