最常见的Unix / Linuxshell

这个问题可能有些天真,但是有没有一个在Unix / Linux用户中最受欢迎的shell

我以前的公司在tcsh上基本上是标准化的,所以我学到了一个好的或者更坏的,但是我想知道是否应该学习bash,ksh或者其他的,如果这些更常见的话。

对于Linux我会说bash,而我看到古典Unix变体似乎更喜欢csh。

因为我希望我的脚本可以在所有我想要的系统上运行(尽可能多),所以我使用Bourne Shell(/ bin / sh)来编写和testing我的脚本。

只需要注意,在某些系统/ bin / sh实际上是bash(例如:我的Mac)。

这是perl。

我总是在某些旧的solaris 2.6上findperl,而且编写perl比编写shell脚本更加便于携带,请记住/ bin / sh可能会有很大差异。 然后,而不是写一些csh / ksh / bash,在那里我总是会发现一个服务器的shell版本错误,我已经切换到perl。 有时会有些冗长,但是我的工作可以100%携带。

而且不需要说shell本身什么都不做:如果你不需要修正grep / awk / sed版本(而且有几十个awk实现),那你就搞定了,而perl模式匹配,数据结构等等是普遍的。

Mac OS X从tcsh切换到bash作为10.3版本的默认loginshell。 对于普通用户,Solaris往往默认为sh和root。

我想我是一个“经典的UNIX变种”(来自Michael Stum的回答),因为我使用tcsh,尽pipe我运行Scientific(更名为CentOs的RHEL)和Ubuntu Linux。

这是因为我第一次进入Linux(并且仍然在使用)时使用的一些软件被devise为在csh下运行,并不总是和sh / bash很好的搭配。 所以这就是我学到的东西,我只是坚持下去。 我在设置新帐户时做的第一件事是将我的默认shell切换到tcsh。

虽然我可以毫无问题地使用bash,但两种shelltypes的语法并不相同(与i-moan的评论相反),而且我更喜欢tcsh语法,尽pipe我相信它有点受限制。 我没有做太多的shell脚本,所以我从来没有问题。

话虽如此,我同意和其他评论者一样,bash是最受欢迎的,可能是因为它已经被默认了很长时间,人们通常不会打扰大卫在“ Unix Shell问题

学习sh作为您的主要shell

结果你的脚本也将在bash中工作

还有..

zsh的

KSH

tcsh的

但说实话,大多数Linux发行版都链接到bash(作为其最受欢迎的超集)

我会build议不要使用'tcsh'作为shell。 这往往会让你觉得在tcsh中编写shell脚本是可以的。 不是。

真正的吸引力似乎是“向上箭头”的命令行易用性,但无论如何你用bash。

而且,编码脚本在'sh'中更容易,它的派生(比如bash和ksh)而不是csh和tcsh。 我也发现sh是unix的风格,而bash很容易作为首选插件获得。

我会警告不要使用ksh和bash的function(如variables数组和散列),除非您可以保证它在整个企业中存在。

使用你最熟悉的shell,但你应该熟悉其他人和他们的基本操作。 我知道Oracle(或者至less是我所知道的Oracle DBA)倾向于使用ksh来完成任务,而在sh中运行很多其他脚本(如安装程序)。

好的是,大多数发行版(linux或其他* nix变体)都有很多可用的shell,所以你仍然可以在除了loginshell之外的shell中运行脚本。

真正的SH看起来正在远离bash,因为Linux使bash成为一个比sh更加stream行的shell(至less对于那些“经典的UNIX变体”)。

我目前强迫自己在zsh中运行以了解更多信息(通常在以前运行bash或tcsh)。 然后我会用ksh来玩,尽pipe我尝试了一次,真的不喜欢它。

当然,bash在Linux发行版中非常受欢迎 – 但是如果你打算成为一个跨UNIXpipe理员,我认为KSH是一个可行的scheme。 无论我在哪里工作,运行多种UNIX,都是默认的。 它比原来的Bourne Shell稍微less一些,但是它没有引入自己的不符合POSIX的特性(比如bash,csh或者tcsh)。

的确,这就是现在基于debian的发行版现在倾向于将/ bin / sh连接起来的原因 – 因为这符合POSIX标准的,而且比bash要less得多。 不幸的是,这么多年来为linux发行版写的很多shell脚本,在shebang行上说#!/ bin / sh实际上假定bash是shell,并使用仅在bash中可用的function – 这不是好的做法。

Bash是一个很好的最终用户shell,但是我认为它的大内存足够让shell脚本不太理想。

最stream行的是bash。 最好的是zsh,但是说服许多人改变他们的习惯并不比bash好。

使用csh或sh是一个错误。 你应该只使用ksh,如果你被迫(bash不可用)。 如果脚本必须具有良好的可移植性,则可以使用sh并注意哪些function对于您的实现是唯一的,或者考虑bash,因为它非常普遍。

我曾经看过那些对tcsh比较喜欢bash的人。

我认为习惯性地使用与脚本交互使用相同的shell是有意义的。 我推荐zsh给那些新学习和掌握自己的环境的人,但是对已经有些轻松的人给予鼓励。 那些可能被迫使用旧炮弹或被迫保留旧剧本的人应该对sh,csh和ksh感到满意。

我的评论来自于经常使用bash的人的偏见,偶尔会注意到zsh说“这很可爱”并且回到bash,并且因为传统的“要求”而偶尔会被迫使用sh或csh。

请注意,当我说sh时,我的意思是旧的bourne shell,当我说csh时,我的意思是旧的csh。 有时这些链接到更现代的炮弹。

另外要注意的是,有两个主要版本的ksh在那里,在function集有一些显着的差异。

我正在用很多带有ksh的AIX服务器。 它也是OpenBSD中root的默认shell。

每一次都可以,我把我的用户帐户的默认shell切换到zsh。

我尽可能经常写sh或perl脚本。

我在Linux方面比较新(我已经使用了两年)。 我认为现代的发行版使用bash。

虽然我听说过ZSH的好东西,但它与BASH是向后兼容的

看看这个链接 :它给出了ZSH优于BASH的优点

Bash是最受欢迎的shell之一。

如果你想编写可移植的shell脚本,使用/ bin / sh,这是一个非常小的shell。 它没有bash所有的function。 有些Linux发行版将/ bin / sh符号链接到/ bin / bash,所以在编写shell时要小心。 Ubuntu有/ bin / sh符号链接到/ bin / dash,它只实现所有的/ bin / sh的东西。 如果它在/ bin / dash上运行,那么它将在sh上运行。