001 - 几种常见的Shell:sh、bash、tcsh、csh、ash的区别

本文最后更新于:12 小时前

[√] 概念


Linux 是一个开源的操作系统,由分布在世界各地的多个组织机构或个人共同开发完成,每个组织结构或个人负责一部分功能,最后组合在一起,就构成了今天的 Linux。例如:

  • Linux 内核最初由芬兰黑客 Linus Torvalds 开发,后来他组建了团队,Linux 内核由这个团队维护。
  • GNU 组织开发了很多核心软件和基础库,例如 GCC 编译器、C语言标准库、文本编辑器 Emacs、进程管理软件、Shell 以及 GNOME 桌面环境等。
  • VIM 编辑器由荷兰人 Bram Moolenaar 开发。

Windows、Mac OS、Android 等操作系统不一样,它们都由一家公司开发,所有的核心软件和基础库都由一家公司做决定,容易形成统一的标准,一般不会开发多款功能类似的软件。而 Linux不一样,它是“万国牌”,由多个组织机构开发,不同的组织机构为了发展自己的 Linux 分支可能会开发出功能类似的软件,它们各有优缺点,用户可以自由选择。Shell就是这样的一款软件,不同的组织机构开发了不同的。

Shell,它们各有所长,有的占用资源少,有的支持高级编程功能,有的兼容性好,有的重视用户体验。

Shell 既是一种脚本编程语言,也是一个连接内核和用户的软件。

alec:

  • 不同的组织机构为了发展自己的 Linux 分支可能会开发出功能类似的软件,它们各有优缺点,用户可以自由选择。Shell就是这样的一款软件,不同的组织机构开发了不同的。
  • Shell,它们各有所长,有的占用资源少,有的支持高级编程功能,有的兼容性好,有的重视用户体验。
  • shell是一款软件
  • shell
    • n. 壳,贝壳;外形;炮弹
    • vt. 剥皮;炮轰
  • Shell 既是一种脚本编程语言,也是一个连接内核和用户的软件。

[√] sh


sh的全称是Bourne shell,由AT&T公司的Steve Bourne开发,为了纪念他,就用他的名字命名了。

sh是UNIX上的标准shell,很多UNIX版本都配有sh。sh是第一个流行的Shell。

alec:

  • sh是UNIX上的标准shell,很多UNIX版本都配有sh。
  • sh是第一个流行的Shell。

[√] csh


sh之后另一个广为流传的shell是由柏克莱大学的Bill Joy设计的,这个shell的语法有点类似C语言,所以才得名为C shell ,简称为csh。

alec:

  • sh之后另一个广为流传的shell是由柏克莱大学的Bill Joy设计的csh
  • 这个shell的语法有点类似C语言,所以才得名为C shell ,简称为csh。

[√] tcsh


tcsh是csh的增强版,加入了命令补全功能,提供了更加强大的语法支持。

alec:

  • tcsh是csh的增强版,加入了命令补全功能,提供了更加强大的语法支持。

[√] ash


一个简单的轻量级的Shell,占用资源少,适合运行于低内存环境,但是与下面讲到的 bash shell 完全兼容。

alec:

  • 一个简单的轻量级的Shell,占用资源少,适合运行于低内存环境,但是与下面讲到的 bash shell 完全兼容。

[√] bash


bash shell是Linux的默认shell。

bash由GNU组织开发,保持了对sh shell的兼容性,是各种Linux发行版默认配置的 shell。

bash兼容sh意味着,针对sh编写的Shell代码可以不加修改地在bash中运行。

尽管如此,bash和sh还是有一些不同之处:

  • 一方面,bash扩展了一些命令和参数;
  • 另一方面,bash并不完全和sh;
  • 兼容,它们有些行为并不一致,但在大多数企业运维的情况下区别不大,特殊场景可以使用bash代替sh。

alec:

  • bash shell是Linux的默认shell。
  • bash由GNU组织开发,保持了对sh shell的兼容性,是各种Linux发行版默认配置的 shell。

[√] 查看shell


Shell是一个程序,一般都是放在/bin或者/user/bin目录下,当前Linux系统可用的Shell都记录在/etc/shells文件中。/etc/shells是一个纯文本文件,你可以在图形界面下打开它,也可以使用cat命令查看它。

1
2
3
4
5
6
7
8
9
# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
1
2
# echo $SHELL
/bin/bash

alec:

  • Shell是一个程序,一般都是放在/bin或者/user/bin目录下
  • 当前Linux系统可用的Shell都记录在/etc/shells文件中
  • 【etc】adv. 〈拉〉及其他,等等
  • /etc/shells是一个纯文本文件,你可以在图形界面下打开它,也可以使用cat命令查看它。

001 - 几种常见的Shell:sh、bash、tcsh、csh、ash的区别
https://alec-97.github.io/posts/3992859133/
作者
Shuai Zhao
发布于
2023年4月29日
许可协议