Linux 内核最初由芬兰黑客 Linus Torvalds 开发,后来他组建了团队,Linux 内核由这个团队维护。
GNU 组织开发了很多核心软件和基础库,例如 GCC 编译器、C语言标准库、文本编辑器 Emacs、进程管理软件、Shell 以及 GNOME 桌面环境等。
VIM 编辑器由荷兰人 Bram Moolenaar 开发。
Windows、Mac OS、Android 等操作系统不一样,它们都由一家公司开发,所有的核心软件和基础库都由一家公司做决定,容易形成统一的标准,一般不会开发多款功能类似的软件。而 Linux不一样,它是“万国牌”,由多个组织机构开发,不同的组织机构为了发展自己的 Linux 分支可能会开发出功能类似的软件,它们各有优缺点,用户可以自由选择。Shell就是这样的一款软件,不同的组织机构开发了不同的。
Shell,它们各有所长,有的占用资源少,有的支持高级编程功能,有的兼容性好,有的重视用户体验。
sh
sh的全称是Bourne shell,由AT&T公司的Steve Bourne开发,为了纪念他,就用他的名字命名了。
sh是UNIX上的标准shell,很多UNIX版本都配有sh。sh是第一个流行的Shell。
csh
sh之后另一个广为流传的shell是由柏克莱大学的Bill Joy设计的,这个shell的语法有点类似C语言,所以才得名为C shell ,简称为csh。
zsh
Z shell (Zsh) 是一个Linux用户很少使用的power-shell,这是由于大多数Linux产品安装,以及默认使用bash shell。几乎每一款Linux产品都包含有zsh,通常可以用apt-get、urpmi或yum进行安装。
tcsh
tcsh是csh的增强版,加入了命令补全功能,提供了更加强大的语法支持。
ash
一个简单的轻量级的Shell,占用资源少,适合运行于低内存环境,但是与下面讲到的 bash shell 完全兼容。
bash
bash shell是Linux的默认shell,由GNU组织开发,保持了对sh shell的兼容性,是各种Linux发行版默认配置的 shell。尽管如此,bash和sh还是有一些不同之处:
一方面,bash扩展了一些命令和参数;
另一方面,bash并不完全和sh;
兼容,它们有些行为并不一致,但在大多数企业运维的情况下区别不大,特殊场景可以使用bash代替sh。
查看 Shell
Shell是一个程序,一般都是放在/bin或者/user/bin目录下,当前Linux系统可用的Shell都记录在/etc/shells文件中。/etc/shells是一个纯文本文件,你可以在图形界面下打开它,也可以使用cat命令查看它。
# cat /etc/shells /bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bin/bash /usr/sbin/nologin /bin/tcsh /bin/csh
# echo $SHELL /bin/bash