1.shell 种类
目前我们的 Linux (以 CentOS 5.x 为例) 有多少我们可以使用的 shells 呢? 你可以检查一下 /etc/shells 这个文件,至少就有底下这几个可以用的 shells:
- /bin/sh (已经被 /bin/bash 所取代)
- /bin/bash (就是 Linux 默认的 shell)
- /bin/ksh (Kornshell 由 AT&T Bell lab. 发展出来的,兼容于 bash)
- /bin/tcsh (整合 C Shell ,提供更多的功能)
- /bin/csh (已经被 /bin/tcsh 所取代)
- /bin/zsh (基于 ksh 发展出来的,功能更强大的 shell)
::~/>cat /etc/shells /bin/sh /bin/bash /sbin/nologin /bin/tcsh /bin/csh /bin/ksh /usr/bin/csh /usr/bin/tcsh
2. /bin/sh 与 /bin/bash 的区别 http://blog.csdn.net/hcbbt/article/details/43305179/
/bin/sh
与 /bin/bash
的区别:
/bin/sh
截取字符串不是POSIX
标准的。
联系: sh
一般设成 bash
的软链 (symlink) . 在一般的 linux 系统当中(例外如 FreeBSD,OpenBSD 等),使用 sh调用执行脚本相当于打开了bash 的 POSIX 标准模式,也就是说 /bin/sh 相当于 /bin/bash --posix。
[root@localhost www]# ls -l /bin/sh /bin/bash -rwxr-xr-x 1 root root 801816 Sep 25 2014 /bin/bash lrwxrwxrwx 1 root root 4 Jul 3 03:22 /bin/sh -> bash
所以,它们之间的各种差异都是来自 POSIX 标准模式 和 bash 的差异,比如 用 : 截取字符串,不能用 let ,遇错中断 等等,在使用时需要注意。
参考:
1. 鸟哥的私房菜:http://vbird.dic.ksu.edu.tw/linux_basic/0340bashshell-scripts.php