shell、bash、terminal和kernel之间的关系

kernel的中文是“操作系统核心”,主要用于管理硬件和提供相关的能力实现,例如存取硬盘、网络功能、CPU资源获取等。关于knernel和各个linux发行版之间的关系,这篇文章说的很好:

来源:https://www.fdzh.org/slides/2015/06/20/linux-distr/

Linux 发行版是什么,它又与Linux内核有什么联系?

Linux内核是计算机操作系统的核心。一个完整的 Linux发行版包括了内核与一些其他与文件相关的操作,用户管理系统,和软件包管理器等一系列软件。每个工具都是整个系统的一小部分。这些工具通常都是一个个独立的项目,有相应的开发者来开发及维护。

前面提到的Linux内核,包括现行版本,以及历史版本(即更早发布的版本)都可以在 找到。Linux的众多发行版可能是基于不同的内核版本的。例如:流行的 RHEL6发行版是基于很老但是很稳定的 2.6.32 版本的Linux内核的。其他的一些发行版可能会很快的更新以适应最新的内核版本。需要特别注意的一点是,内核并不是一个非此即彼的命题,例如RHEL6就在2.6.32的内核中引进了新版本内核的许多改进。

各发行版提供的其他基本工具和组成部分还有包括以下的内容:C/C++编译器,gdbdebugger 调试工具,核心系统库应用程序,用于在屏幕上绘图的底层接口以及高级的桌面环境,以及供安装和更新包括内核在内的众多组建的系统

众多不同的Linux发行版满足了不同用户及组织的不同需求。大型商业机构通常倾向于使用来由 Red Hat、 SUSE 及 Canonical (Ubuntu)提供的发行版。

Fedora 是基于RHEL,CentOS,Scientific Linux, 和Oracle Linux的社区版本。相比RHEL,Fedora打包了显著的更多的软件包。其中一个原因是,多样化的社区参与Fedora的建设;它不只是一家公司。在这个过程中,CentOS用于活动,演示和实验,因为它是对最终用户免费提供的,并具有比Fedora的一个更长的发布周期(通常每隔半年左右发布一个新版本)。

SUSE, SUSE Linux Enterprise Server (SLES), 和openSUSE 之间的关系类似于 Fedora, Red Hat Enterprise Linux, 和CentOS的关系。

Debian是包括Ubuntu在内许多发行版的上游,而Ubuntu又是Linux Mint及其他发行版的上游。Debian在服务器和桌面电脑领域都有着广泛的应用。Debian是一个纯开源计划并着重在一个关键点上,稳定性。它同时也提供了最大的和完整的软件仓库给用户。

注:Debian、Cent OS等等和Ubuntu一样,都是发行版本,指的就是基于linus维护的linux内核,是由一些厂商集成了漂亮易用的桌面和常用的软件而发布的商品。但是一部分发行版继承了另一部分发行版的功能,例如Ubuntu和Debian。内核版本只由linux的开发团队开发

关于各个发行版之间的比较,可以看这篇文章:https://www.zhihu.com/question/29406367

可以使用uname -a查看所使用的发行版的内核版本:例如我ubuntu 18.04查询的结果是5.0.0-32-generic,查询网络可知,这个包包括的是“ the unsigned Linux kernel image for version 5.0.0 on ARMv8 SMP.”

什么是shell和bash

shell的意思是“壳程序”,指的是能对操作系统和应用程序进行操作的接口程序,狭义的壳程序指的是命令行方面的软件,例如bash;广义上也包括图形界面下的程序。

shell不止有一种。在计算机历史的长河里,有许多种shell,例如:

Bourne shell(简称为sh):第一个shell

C shell(简称为csh):由于语法和C语言类似而得名

Bourne Again Shell(简称为bash):这是对Bourne shell的增强版本

Tenex C shell(简称tcsh):是C shell的增强版本

我们的Linux默认使用的是bash,但是其实支持许多类型的。可以通过这个命令查看linux支持的shell:vim /etc/shells.

不同shell的语法有差异。Linux默认使用的shell是bash,所以我们只需要学会bash,就能快乐的使用任意一个linux发行版了!

刚才我们提到的/etc/shells,其实是/etc目录下的一个文件,打开之后就能看到:

1 # /etc/shells: valid login shells 2 /bin/sh 3 /bin/bash 4 /bin/rbash 5 /bin/dash

这个文件用来记录系统中可以使用的shell的位置,但是只是一部分,不是全部。当系统进行某些服务时就能够依据这个文件的记录来进行操作。

/etc目录下还有一个文件叫passwd,我们使用vim打开看一下:

root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin

不同的用户登录系统时,系统就会给我们一个默认shell来进行工作,那这个不同使用者默认的shell分别是什么哪?这些记录就都在/etc/passwd文件中。它可以帮助系统控制用户的权限,例如像这里的root用户可以使用bash,但是像一些权限较低的用户,例如这里的daemon和bin用户(这两个都是系统账号),就使用一个叫做nologin的shell,这个shell中限制了功能,从而限制了他们对系统的修改和对系统功能的使用。同样的,我们可以使用chsh命令来更换shell,但是更换的结果需要重启shell后才能体现出来。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzwpgj.html