您的位置:首页 > 运维架构 > Shell

shell 与 /etc/shells 功能

2016-04-04 15:41 561 查看
只要能够操作应用程序的接口都能够成为 shell,Linux系统提供多种不同的Shell以供选择。常用的有 Bourne Shell(简称sh)、C-Shell(简称csh)、Korn Shell(简称ksh)和 Bourne Again Shell (简称 bash )等。

(1)Bourne Shell(sh)是 AT&T Bell 实验室的 Steven Bourne为 AT&T 的 Unix 开发的,它是 Unix 的默认 Shell,也是其它Shell的开发基础。Bourne Shell 在编程方面相当优秀,但在处理与用户的交互方面不如其它几种 Shell 。

(2)C Shell(csh)是加州伯克利大学的 Bill Joy 为 BSD Unix 开发的,与 sh 不同,它的语法与 C 语言很相似。它提供了 Bourne Shell 所不能处理的用户交互特征,如命令补全、命令别名、历史命令替换等。但是,C Shell 与 BourneShell 并不兼容。

(3)Korn Shell(ksh)是 AT&T Bell 实验室的 David Korn 开发的,它集合了 C Shell 和 Bourne Shell 的优点,并且与 Bourne Shell 向下完全兼容。Korn Shell 的效率很高,其命令交互界面和编程交互界面都很好。

(4)Bourne Again Shell (即bash)是自由软件基金会(GNU)开发的一个 Shell,它是 Linux 系统中一个默认的 Shell。Bash 不但与 Bourne Shell 兼容,还继承了 C Shell、Korn Shell 等优点。

目前我们的 Linux(以 Red Hat Enterprise Linux Server release 6.4为例)有多少可以使用的 shell 呢?可以检查一下 /etc/shells 这个文件:



为什么我们系统上合法的 shell 要写入 /etc/shells 这个文件?

这是因为系统某些服务在运行过程中,会去检查用户能够使用的 shells,而这些 shell 的查询就是借助 /etc/shells 这个文件。

举例来说,某些 FTP 网站会去检查用户的可用 shell,而如果你不想要让这些用户使用 FTP 以外的主机资源时,可能会给予该用户一些奇怪的 shell,让用户无法以其他服务登陆主机。这个时候,你就得将那些怪怪的 shell 写在 /etc/shells 当中了。举例来说,我们的 Red Hat 6.4 的 /etc/shells 里头就有个 /sbin/nologin 文件的存在,这个就是我们所说的奇怪的 shell。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: