我应该使用哪个 shell - tcsh 还是 bash?

Laz*_*zer 33 linux shell bash fedora tcsh

我已经使用tcsh了很长时间了。但是每当我在寻找某些东西时,我经常会发现指定的方法是bash特定的。甚至两者的 shell 脚本的语法也不同。

从我在互联网上搜索和学习的经历来看,bash似乎是使用更常见的shell。甚至这个网站上被标记bash的问题数量也比被标记的问题数量多得多(目前是五倍)tcsh

所以,我想知道我是否应该切换到 bash。你怎么认为?

我为什么要坚持tcsh或为什么要转到bash

gvk*_*vkv 27

实际上,您应该移至zsh! 它本质上是向后兼容的,它得到了所有的工具bash有一个大巨大帮助的迷死。甚至还有一本书(虽然我还没来得及读它)。

我承认一个不使用zsh过度的原因,bash但除非您经常在多个新安装中工作,否则它并不真正适用。特别是如果您了解最显着的差异。然而,这实际上类似于vim和之间的差异vi;你不想天真,但实际上这没什么大不了的。即使是铁杆vim用户也可以找到解决办法emacs,反之亦然。


And*_*ern 25

在学习了 bash 之后,我发现 tcsh 有点倒退了。例如,我可以在 bash 中轻松完成的事情我发现在 tcsh 中很难完成。我关于 tcsh 的问题。Internet 支持和文档对于 bash 来说也好得多,而对于 tcsh 则非常有限。O'Reilly 关于 bash 的书籍数量很大,但我没有发现与 tcsh 相似的内容。


jll*_*gre 21

您应该切换到符合 POSIX 的 shell http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html,例如 bash、ksh、dash 之一,但不是 zsh,当然也不是 tcsh。自从 csh 被宣布为脚本编写的糟糕选择以来已经有很长时间了:http : //www.faqs.org/faqs/unix-faq/shell/csh-whynot/,tcsh 在该领域并没有太大的不同。

在编写脚本时,如果您不想再次被锁定在不可移植的东西中,请确保仅使用 POSIX 结构(即避免 bashisms 之类的东西)。


Kev*_*ntu 7

我认为,痴迷的兼容性忽略了这一点。如果您尝试通过将所有内容放在#!/bin/sh顶部并使用.sh扩展名来使所有内容兼容,但从不测试bash 之外的任何内容,则无法保证脚本兼容!最好只使用#!/bin/bash.bash以便用户真正了解真正的需求。

如果您了解zshtcsh或其他比bash更好的东西,并且有一本很好的参考手册,请不要犹豫。就像人们希望安装perlpython来运行一些脚本一样,他们也可以处理安装你晦涩难懂的 shell!:D

  • 我不确定什么是保证。我知道有很多人为“/bin/sh”编写脚本,这些脚本充斥着 Bash-as-/bin/sh 容忍的 Bash 主义,但它们混淆了 `dash`(Debian 的 `ash` 和 Bourne 兼容 shell) . (2认同)

Pet*_*r.O 6

哪个壳?选择具有最佳“易用性”与“麻烦”比率的那个......

如果您找不到足够的“玛莎拉蒂”外壳的一般示例和解释,那么它的额外性能可能比奖金更像是一个问题......

我发现这篇文章/网站很有趣;可能值得一读:
UNIX shell 差异以及如何更改 shell