UNIX Shell 程序解释用户命令,这些命令可以直接由用户输入,也可以从名为 Shell 脚本或 Shell 程序的文件中读取。Shell 脚本是解释执行的,而不是编译的。Shell 逐行读取脚本中的命令,并在系统上搜索这些命令(参见第 1.2 节),而编译器将程序转换为机器可读的形式,即可执行文件 - 然后可以在 Shell 脚本中使用。
除了向内核传递命令外,Shell 的主要任务是提供用户环境,可以使用 Shell 资源配置文件单独配置该环境。
就像人们知道不同的语言和方言一样,您的 UNIX 系统通常会提供多种 Shell 类型
sh 或 Bourne Shell:最初的 Shell,仍然在 UNIX 系统和与 UNIX 相关的环境中使用。这是基本的 Shell,一个功能很少的小程序。虽然这不是标准 Shell,但为了与 UNIX 程序兼容,它仍然在每个 Linux 系统上可用。
bash 或 Bourne Again shell:标准的 GNU Shell,直观且灵活。对于初学者来说可能是最明智的选择,同时对于高级和专业用户来说也是一个强大的工具。在 Linux 上,bash 是普通用户的标准 Shell。此 Shell 是 Bourne Shell 的所谓超集,是一组附加组件和插件。这意味着 Bourne Again shell 与 Bourne shell 兼容:在 sh 中工作的命令,在 bash 中也有效。但是,反之则不然。本书中的所有示例和练习都使用 bash。
csh 或 C shell:此 Shell 的语法类似于 C 编程语言的语法。有时程序员会要求使用。
tcsh 或 TENEX C shell:通用 C shell 的超集,增强了用户友好性和速度。这就是为什么有些人也称其为 Turbo C shell。
ksh 或 Korn shell:有时受到具有 UNIX 背景的人的赞赏。Bourne shell 的超集;使用标准配置对于初学者来说是一场噩梦。
文件/etc/shells提供了 Linux 系统上已知 Shell 的概述
mia:~> cat /etc/shells /bin/bash /bin/sh /bin/tcsh /bin/csh |
您的默认 Shell 在/etc/passwd文件中设置,例如用户 mia 的这一行
mia:L2NOfqdlPrHwE:504:504:Mia Maya:/home/mia:/bin/bash |
要从一个 Shell 切换到另一个 Shell,只需在活动的终端中输入新 Shell 的名称即可。系统使用PATH设置查找名称出现的目录,并且由于 Shell 是可执行文件(程序),因此当前 Shell 会激活它并执行它。通常会显示一个新的提示符,因为每个 Shell 都有其典型的外观
mia:~> tcsh [mia@post21 ~]$ |