这个问题可能有点幼稚,但是是否存在一个在 Unix/Linux 用户中最流行的 shell?
我之前的公司基本上是采用 tcsh 标准化的,所以我不管好坏都学了这个,但我想知道我是否应该学习 bash、ksh 或任何其他的,如果这些更常见的话。
答案1
对于 Linux,我会说 bash,但我发现经典的 Unix 变体似乎更喜欢 csh。
答案2
因为我希望我的脚本能够在我想要的所有系统上运行(尽可能多),所以我使用 Bourne Shell(/bin/sh)编写和测试我的脚本,它存在于我所遇到的所有 Unix 系统中。
只需知道在某些系统上 /bin/sh 实际上是 bash(例如:我的 Mac)。
答案3
这是 perl。
即使在旧的 solaris 2.6 上,我也总能找到 perl,而且编写 perl 比编写 shell 脚本更具有可移植性,请记住 /bin/sh 可能会有很大差异。然后,我不再编写 csh/ksh/bash,因为我总是会发现某个服务器的 shell 版本与功能 X 不符,因此我改用了 perl。它有时会更冗长一些,但我的工作具有 100% 的可移植性。
并且无需说 shell 本身什么都不做:如果您不必更正 grep/awk/sed 版本(并且有几十种 awk 实现),那么您就完蛋了,而 perl 模式匹配、数据结构等都是通用的。
答案4
我想我是一个“经典 UNIX 变体”(来自 Michael Stum 的回答)的人,因为我使用 tcsh,尽管我运行的是 Scientific(更名为 RHEL,如 CentOs)和 Ubuntu Linux。
这是因为,我刚接触 Linux 时使用的一些软件(现在仍在使用)是为在 csh 下运行而设计的,与 sh/bash 配合并不好。所以我学到了这一点,并一直坚持使用。设置新帐户时,我做的第一件事就是将我的默认 shell 切换为 tcsh。
虽然我可以毫无问题地使用 bash,但两种 shell 类型的语法并不相同(与 i-moan 的评论相反),而且我实际上更喜欢 tcsh 语法,尽管我认为它有点受限。我不经常编写 shell 脚本,所以我从来没有遇到过问题。
话虽如此,我和其他评论者一样,同意 bash 是最受欢迎的,可能是因为它长期以来一直是默认设置,而且人们通常不愿意切换默认设置,正如 David 在Unix Shell 的比较问题