|
发表于 2006-5-30 19:52:12
|
显示全部楼层
下面发言纯粹不来自实践!
无所谓不屑吧。绝大多数Linux的默认shell就是bash,可能和它是GNU项目有关。
一般认为csh适合交互使用而不适合脚本编程。首先和它本身的一些限制有关,有一篇csh.whynot(Csh Programming Considered Harmful)的著名文章,对此进行了详述。
sh (Bourne兼容shell)是标准UNIX(符合Single UNIX Specification的系统)必备的。
sh是有标准的(POSIX 1003.1 Shell & Utilities卷)。
所以sh脚本的可移植性是有保证的。
在交互使用方面,csh肯定优于最早的sh。csh最早是BSD的产物,但Unix System V的用户强烈感到sh作为交互shell的不便,所以把csh移植到SysV的呼声很高,很多发行商把csh作为增值品加入了SysV,到SVR4就正式吸收了csh和其它很多来自BSD的产物如TCP/IP。
SVR4还引入了ksh,这是AT&T Bell Lab的David Korn开发的与sh向后兼容的吸收了csh交互使用优点的shell。
此后,sh的衍生如GNU Bash和zsh,都和ksh一样吸收了csh交互使用的优点,并有很多增强,并且它们都可运行在POSIX兼容模式下,所以csh的优势并不那么大了。
现在纯粹的csh的应用还广泛吗?tcsh是否更加普遍?FreeBSD上tcsh是默认shell,苹果上一直在改,从tcsh到zsh到bash。其它商用Unix则不清楚。
你说到不屑,其实很多从Unix时代过来的“老人”倒是对bash很是不屑,更钟爱ksh或zsh,comp.unix.shell上持这种观点的人不少。就是Linux用户中偏爱其它shell的也很多,zsh的受欢迎程度是很高的,主要是交互使用方面,优点比bash更多。好在Linux上这些主流shell都容易获得的。 |
|