我遇到过以下情况:以百分比的形式了解shell使用情况会非常有用。例如,我正在寻找像
这样的东西bash: X%, sh: Y%, csh, tcsh, zsh, ksh, dash, etc..
显然,我知道有几个并发症 - 多个炮弹,“使用”的定义,不确定性等等,但我希望看到从实际数据中得出的明智答案,并根据一些规定的指标,即使结果可能是错误的。
如果有历史数据表明偏好发生了变化,则会获得奖励。
答案 0 :(得分:2)
TIOBE指数如何:
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
它包括脚本语言(包括C-shell和bash)与历史的流行。
答案 1 :(得分:1)
我的猜测是,BASH现在是首选的外壳,占据了shell用户的巨大份额。它是Linux上的默认shell,Linux几乎占据了Unix世界。 (是的,Linux不是真正的Unix,但它真的很接近)。
Csh是BSD集的域,其中包括SunOS和Mac OS X.但是,Mac OS X在版本10.4中切换到Bash,Solaris切换到POSIX shell(在语法上类似于Bash)。 / p>
有点历史......
大多数Unix用户使用Csh作为默认shell,但在Bourne shell中编程。 Csh在Bourne shell中缺少很多功能,比如别名和命令行编辑,当你以交互方式使用它时很有用。但是,Csh是一个糟糕的编程shell。汤姆克里斯蒂安森的seminal paper on Csh类关于Csh编程的交易。事实上,即使是基于BSD的系统也会在启动脚本等中使用Bourne shell。
当Kornshell出来时,我和很多其他用户交换过。 Kornshell具有熟悉的Bourne shell语法,但也具有Csh具有的高级用户功能。事实上,Kornshell的命令历史能力优于Csh的命令历史。 Kornshell最大的问题是它由AT& T拥有并且不是开源的。几乎所有商业Unix平台(SunOS除外)都有Kornshell可用。但是,开源平台无法使用Kornshell。
Bash是在20世纪80年代后期开发的,它是一个真正的OSS shell,具有Kornshell的许多功能。但是,Bash试图更符合POSIX标准(它采用了很多Kornshell的功能)。
我仍然更喜欢Kornshell(主要是因为习惯),但我在更少的系统上找到它。我告诉大多数新的Unix负责人学习BASH,因为它拥有最多的资源并且是最容易获得的。
我的建议是不要过分担心Bash vs. Kornshell vs. Bourne Shell vs. Posix。他们都完全相同。忘记Csh。自2004年以来,官方Turbo Csh page尚未更新。
如果编写shell脚本,请使用所有Bourne类型shell中常见的功能。使用printf
代替echo
或print
(Kornshell功能),使用[
和]
代替[[
和]]
因为双方括号在所有壳之间不完全相容。也避免使用数组。 Bash 4.0支持它们,但不支持早期版本。 Kornshell支持数字和字符串数组,但它们的声明与Bash不同。这仍然留下了大约90%的shell脚本功能。
此外,你最好用Python或Perl编写,这是更强大,更快的脚本语言。另外,两者都比各种shell更加平台无关。我编写了shell脚本,但只有几十行,我转而使用真正的脚本语言。