对于 FreeBSD 和 Debian,我应该学习哪种 shell?

对于 FreeBSD 和 Debian,我应该学习哪种 shell?

我读过很多文章,说 FreeBSD 中的官方 shell 是tcsh,而 Debian 中的官方 shell 是dash.然而,当我echo $shell(FreeBSD)或env在 Debian 中时,它说 shell 是csh第一种情况,或bash在 Debian 中。

这是全新安装的情况。我在root账户和普通用户账户下进行了测试。另外,当我在 FreeBSD 中创建一个新帐户时,我可以选择 3 个 shell;shcsh或者tcsh。如果我不做选择,csh则为帐户的默认值。

这些系统下的官方标准 shell 是什么?是它tcsh还是csh在 FreeBSD 中?是在 Debian 中dash还是bash在 Debian 中?

是我做错了什么吗?或者这些文章和网站是否存在误导?

我想学习两种 shell:一种用于 Debian,一种用于 FreeBSD,但我找不到应该学习哪一种,因为不清楚哪一种是官方 shell。

另外,在搜索我应该学习哪个 shell 时,我发现了这个:http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/ 是只是不喜欢的人csh,还是我们真的应该避免csh

我正在使用最新的 Debian 和 FreeBSD 版本。

我开始迷失所有这些 shell 选项,它们对我来说看起来都一样(除了语法;我的意思是它们看起来都提供相同的可能性)。这就是为什么我想学习官方的。

答案1

您根本不需要使用给定系统的默认 shell。 Debian 和 FreeBSD 都提供了许多不同的 shell,并且大多数或全部 shell 都可以在两者上使用,或者是预安装的,或者是易于安装的。

注意命名。/bin/csh真正的 tcsh、/bin/shbash 或 ksh并不罕见。

sh,Bourne shell,是最古老且仍在普遍使用的 Unix shell。 bash可能是使用最广泛的 sh 衍生物;ksh并且zsh也很普遍。

csh,C shell,是由 Bill Joy 为 BSD 开发的。它具有一些比sh(或至少比sh当时存在的旧版本) 更方便的交互使用功能。tcsh源自csh,并添加了很多新功能,其中大部分旨在交互使用。正如您通过阅读所看到的csh.whynot、csh 和 tcsh 在使用它们进行脚本编写而不是交互时存在一些问题。

就我个人而言,我从 csh 开始,然后在 tcsh 可用时切换到 tcsh。我现在很少使用 csh 来编写脚本,更喜欢使用 sh 或 bash(或者 Perl 来处理相当复杂的事情)。

(几年后更新:我已经放弃了 tcsh,现在交互地使用 bash。)

我的建议是选择一个 shell 并很好地学习它,在 FreeBSD 和 Debian 上使用它。如果你选择 tcsh,我想你必须在 Debian 上安装它:sudo apt-get install tcsh。如果你选择bash,我不知道FreeBSD上是否预装了它;如果不是,安装也应该同样简单。

没有必要以交互方式使用相同的 shell 并用于编写脚本,但它可以避免一些混乱并缩短学习曲线。

ksh 可能与 bash 一样强大,而 zsh 甚至更强大(并且有很多我从未花时间学习的功能)。

我建议使用 bash,适用于 FreeBSD 和 Debian(以及您可能使用的任何其他类 Unix 系统),以及交互式使用和脚本编写。但其他选择是完全合理的,有些可能更适合您。

相关内容