|
第一个流行的 shell 是由 Steven Bourne 发展出来的,所以称为 Bourne shell(简称 sh)。后来另一个广泛流传的 shell 是由柏克莱大学的 Bill Joy 设计依附于 BSD 版的 Unix 系统中的 shell,该 shell 语法类似 c 语言,所以才得名为 C shell(简称 csh)。 Sun 主要是 BSD 的分支之一,而且 Sun 主机势力庞大,所以 csh 流传广泛
#目前 Linux 可以使用的 shells
以 CentOS 7 为例,有多少我们可以使用的 shells 可以通过检查 /etc/shells 文件,至少有以下几个
/bin/sh:已被 /bin/bash 所取代
/bin/bash:Linux 预设的 shell
/bin/tcsh:整合 C Shell 提供更多的功能
/bin/csh:已被 /bin/tcsh 取代
虽然各家 shell 的功能都差不多,但是在某些语法下达方面则所有不同,因此建议需要选择一种 shell 来熟悉。Linux 预设就是使用的 bash,因此最初学会它就非常了不起了。
为什么系统上合法的 shell 要写入 /etc/shells 这个文件?因为系统某些服务在运行过程中,回去检查使用者能够使用的 shells
举例来说:某些 FTP 网站回去检查使用者的可用 shell,而如果你不想让这些用户使用 FTP 以外的主机资源时,可能会给予该使用者一些怪怪的 shell,让使用者无法以其他服务登录主机。这个时候,你就可以将那些怪怪的 shell 写到 /etc/shells 中。举例来说, CentOS 7 的 /etc/shells 里头就有个 /sbin/nologin 文件的存在,这个就是我们说的怪怪的 shell
我这个使用者上面时候可以取得 shell 来工作呢?还有预设会取得哪一个 shell 呢?在登录终端的时候,系统就会给一个 shell 进行工作,而这个登录取得的 shell 就记录在 /etc/passwd 文件内
[mrcode@study ~]$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
...
如上所示,每一行的最后一个数据,就是你登录后可以取得的预设 shell,系统账户 bin 与 daemon 等就是使用哪个怪怪的 /sbin/nologin ,关于使用者这部分的内容,在后续 第十三章的账户管理中讲解
|
|