我应该使用哪个shell-tcsh vs bash?[关闭]


30

我已经使用tcsh了很长时间了。但是,每当我搜索某些内容时,我常常会发现指定的方法是bash特定的。甚至Shell脚本的语法对于这两者来说都是不同的。

从我在Internet上搜索和学习的经验来看,bash似乎是最常用的shell。甚至这个网站上标记bash的问题数量也比标记的问题数量多(当前多五倍)tcsh

因此,我想知道是否应该切换到bash。你怎么看?

我为什么要坚持tcsh或为什么要继续前进bash


3
我不认为我曾经听说过有人切换 bash的; 通常人们使用bash,因为它是默认设置,然后切换到更好的东西:)
Michael Mrozek

6
@Michael:好吧,OS X在10.3版中从tcsh切换到bash,这就是人们切换到bash的一种情况。
sepp2k 2010年

5
您应该使用zsh(OS X应该已经切换到了)
xenoterracide 2010年

6
但是为dash那些应该在几乎所有内容上都能工作的脚本编写脚本。
xenoterracide

2
我发现每个人都在暗示着一点有趣zsh。同时,它并不是很有趣,因为它不能真正回答操作问题。这就是为什么我将zsh响应设为评论而不是答案。直截了当,除非您在学习如何对tcsh脚本加壳时遇到问题,否则请继续学习。如果您在使用时遇到tcsh问题,请在此处发布您的问题。不要仅仅因为原因而切换。有更多的bash帖子,因为默认情况下将其安装在更多地方,但这并没有使它更好。
xenoterracide 2010年

Answers:


22

学习了bash之后,我发现tcsh倒退了一步。例如,我在bash中可以轻松完成的工作,发现在tcsh中很难完成。我对tcsh的问题。Internet支持和文档对于bash来说也更好,而对于tcsh来说则非常有限。O'Reilly关于bash的书籍数量很多,但是我发现tcsh没有类似的东西。


26

实际上,您应该移至zsh!它本质上是向后兼容的,它bash强大功能的巨大帮助下获得了所有实用程序。甚至有一本书(尽管我还没有读过)。

我承认一个原因是不要zsh过度使用,bash但是除非您一直在进行多个新安装,否则它实际上并不适用。特别是如果您知道最重要的差异。但是,这实际上类似于vim和之间的区别vi;您不想天真,但实际上没什么大不了的。甚至核心vim用户也可以找到自己的方式emacs,反之亦然。


20

您应该切换到POSIX兼容的外壳程序http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html,类似于bash,ksh,破折号之一,但不能是zsh,当然也不能是tcsh。自从csh被宣布为脚本的不良选择以来已经有很长时间了:http : //www.faqs.org/faqs/unix-faq/shell/csh-whynot/,tcsh 在该领域并没有太大不同。

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


7

我认为,痴迷于兼容性的问题遗漏了重点。如果尝试通过放在#!/bin/sh顶部并使用.sh扩展名使所有内容兼容,但仅对bash进行测试,则不能保证兼容脚本!最好只使用#!/bin/bash.bash让用户真正了解真正的需求。

如果您知道zshtcsh或比bash更好的东西,并且拥有很好的参考手册,请不要退缩。就像人们期望安装perlpython能够运行某些脚本一样,他们也可以处理安装晦涩的shell!:D


1
/bin/sh当tcsh是csh派生的shell时,实际上不能保证指向兼容korn的shell。可能/bin/sh已经指向bash或其他兼容的shell,并且几乎可以确定它不会受到用户 shell 更改的影响。csh和sh完全不兼容。
Maciej Piechotka 2010年

1
我不确定会保证什么。我知道有很多人在为“ / bin / sh”编写脚本,这些脚本中散布着Bash-ism- / bin / sh可以容忍的Bash主义,但令人困惑dash(Debian ash和Bourne兼容的Shell)。
凯文·坎图

另一点:#!/ bin / bash不会限制您使用的Bash版本,并且一个版本与另一个版本之间存在一些不兼容性,尽管最坏的情况是很久以前在v2中引入的。我不知道POSIX兼容模式下的版本之间是否存在任何不兼容。
查尔斯·斯图尔特

任何人都可以随心所欲地为他们想要的Shell编写任何东西,并且您就#!/bin/sh单独的-nePOSIX 提出了正确的观点。但是,关注POSIX兼容性不应被标记为“痴迷”。sh使用debian / ubuntu 调用默认破折号,现在已经有一段时间了。我知道那将不算是“保证”,但我很少认为任何可移植性都是“保证”的。如果使用“ shell脚本”,我将更加保留。
JM Becker

6

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

如果找不到适合您的“玛莎拉蒂”外壳的常规示例和解释,那么额外的性能可能是更多的问题,而不是额外的奖励...

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


0

与bash相比,zsh与tcsh可能有更多相似之处。

请参阅:http://zsh.sourceforge.net/FAQ/zshfaq02.html#l13

人们经常声称zsh可以做bash不能做的事情,但是我还没有发现这种情况。我看到的是,对于zsh而言,它更容易,默认情况下是内置的或打开的,而在bash中,它是一个附加脚本,必须将其打开或更加困难。

(免责声明:我是bash用户,有时会考虑切换到zsh)


-3

由于某种原因,我曾经使用过tcsh,就像20年前一样。据我所知,bash源自sh,但是当然还有很多csh东西,但是tcsh源自csh。我真的很喜欢早期的命令完成,但是现在大多数shell中都可以使用它。对于脚本编写,我们应该坚持使用/ bin / sh吗?


6
这并不是真的要回答这个问题。更多的是评论。
slm
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.