3-Linux用户区与终端

本文简要介绍一下Linux用户区中的C语言函数库、Shell和终端的概念。

Linux用户区

C语言函数库

系统调用接口提供的功能往往比较单一,如果纯用系统调用在用户区完成某功能的话,需要用到大量系统调用,很麻烦。

于是C语言函数库/标准库就诞生了,它封装了系统调用接口,使用方便,经过优化效率高。

Shell

用户通过shell来与操作系统交互,它本身提供了多种功能,比如各种命令,还有重定向等功能。

此外,Shell还有许多种类,最常使用的就是bash。sh是第一个shell,不过现在推荐用zsh。

终端

早期

早期终端还不属于操作系统:

这就是最早的终端:一台电传打字机,早期的unix系统是一个多用户的操作系统,每个用户通过该设备与shell交互,终端把数据传递给shell,shell处理完毕后再发会终端。

现在

用户使用终端和shell交互的设计理念从未变过。现在的操作系统会模拟出一个终端,我们可以通过该终端与shell交互:

  • windows GUI,dos。
  • Linux GUI,命令行终端。
  • mac GUI,命令行终端。

终端的简写是tty,这是因为以前电传打字机的英文是Teletypetty是它的简写。

现在,虚拟终端是操作系统的一部分了。

Linux的终端

Linux的终端有两种(*是一个数字):

  • tty/*:是Linux默认提供的终端,就是Linux系统自带的黑窗口。
  • pts/*:就是虚拟终端,我们通常用到的就是这个。远程连接和图形界面都是虚拟终端。

如上图所示,在Ubuntu终端中输入w命令查看当前登录的用户,可以发现目前就我zeroize一个用户,使用tty2。输入tty命令可以查看tty2到底是什么,可以发现是pts/0

参考资料

  • Linux系统编程 - 飘零的落花
  • Linux基础课 - Acwing