为什么大多数操作系统(如Ubuntu、Fedora、OSX等)默认使用bash作为shell?为什么很多高级用户主要使用zsh?如果zsh这么好,为什么不是默认选择呢?
我两个都用,对于我所有的任务来说,没有区别 :)
我两个都用,对于我所有的任务来说,没有区别 :)
Zsh具有更先进的交互功能,但在脚本编写方面存在一些怪癖(现在比过去少)。在1990年代初至中期,Linux刚开始发展时,zsh几乎是未知的。
Ksh自20世纪80年代中期以来一直是商业UNIX系统的事实标准,但直到2000年之前它都是专有软件,因此在Linux上无法使用。此外,与bash相比,ksh的命令行编辑能力较差。
Pdksh是ksh的一个免费克隆版本,可能是一个选择,但它并不广为人知,并且拥有较低的命令行编辑能力。(尽管ATT ksh现在是免费的,Pdksh项目已经不再活跃,但它仍然在一些BSD系统中使用)
一些发行版将ash变体安装为/bin/sh
。Ash(我指的是称为ash的一系列松散的shell)被设计为小而快速,没有交互功能(仅用于编辑脚本)。对ash的再度关注是相对较新的现象;在1990年代,现有的变体缺乏很多功能。
Tcsh是zsh出现之前最先进的交互式shell,但它与sh不兼容,并且在脚本编写方面不太好用。
#!/bin/sh
作为shebang。这在Debian和Ubuntu中得到了改变,却导致当时80%到90%的为GNU/Linux编写的自定义shell脚本出现问题。至少它教会了我们如何正确指定shebang....;-) - thecarpyksh
自身是一种“更好”的语言,如果 bash
在相关领域中更受欢迎(在 GNU 中它是首选),那么使用它也不会有太大的优势。
那些进行切换的人都是经验丰富的,并且有足够的能力轻松地切换到他们最喜欢的 shell。然而,一个新手被迫使用不那么流行的 shell 会很快感到困惑,如果他们搜索互联网上的某些内容,结果却无法实现。因此,任何一个面向 Unix 老手以外的发行版,如果不将 bash 设为标准,就会带来相当大的风险,只有少数人会从中受益(而且收益微乎其微)。
ksh
,那么大多数人使用不同的shell也是事实,这本身就可以解释为什么ksh
不是默认的shell。然而,我不认为这是原因,让我们等待一些杀手级答案,我相信这个问题会得到回答。 - kos