Linux 中的 shell 有很多类型,其中最常用的几种是:Bourne shell (sh)、C shell (csh) 和 Korn shell (ksh),它们各有优缺点,用户则萝卜青菜,各有所爱。
Bash:Bourne again shell
Bourne shell 是 Unix 最初使用的 shell,并且在每种 Unix 上都可以使用,虽然它在编程方面相当优秀,但在处理与用户的交互方面做得不如其他几种shell。
说到底,shell这个物种,不仅要功能强大,而且还需要容易上手,毕竟shell是“人-机”交互的接口,不同于其他的编程语言,它们侧重于后台批处理任务,与人的交互不是首要考虑的问题。而shell要做到“通机器,懂人性”,这样才能有更多的受众人群。
后来,创始人 Bourne 决定赋予 Bourne shell 新的生命,使其更适合于交互式使用,因此开创了新的项目并命名为 “Bourne again shell”,简称 “Bash”,也有好事者称 Bash 为 “重生shell(born again shell)”。
Bash 是 Bourne shell 的扩展,与 Bourne shell 完全向后兼容,并且在Bourne shell 的基础上增加和增强了很多特性。可以提供如命令补全、命令编辑和命令历史表等功能,它还包含了很多 C shell 和 Korn shell 中的优点,有灵活和强大的编程接口,同时又有很友好的用户界面。所以,Linux 操作系统缺省的 shell 是 Bash。
要想赢得用户占领市场就得有抓住人们的内心需求,得民心者得天下,这个道理在shell上如此,在python shell领域同样又上演了一次,python自带的shell功能不强大,交互性不强,从而给了ipython shell上位的机会。后来ipython shell越做越大,直至发展成ipython notebooks。
notebooks是文本化编程思想的体现,文档和代码交错在一起,文档给人写的,代码给电脑运行。
从交互命令行编程发展到文本化编程,这是思想上巨大的提升。后来,ipython notebooks改名为jupyter notebooks,从此之后一路绝尘,成为一个大名鼎鼎的科学利器。如果说有什么每个数据科学家都应该使用或必须了解的工具,那非jupyter notebooks莫属了。