我应该为 FreeBSD 和 Debian 学习哪个 shell?

use*_*057 7 shell freebsd debian

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

这是在全新安装中。我在 root 帐户和普通用户帐户下进行了测试。另外,当我在 FreeBSD 中创建一个新帐户时,我可以选择 3 个 shell;shcshtcsh。如果我别无选择,csh则默认为该帐户。

这些系统下的官方标准外壳是什么?是它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 选项,它们在我看来都一样(除了语法;我的意思是它们都希望提供相同的可能性)。这就是为什么我想学习官方的。

Kei*_*son 14

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

注意命名。/bin/csh真正成为 tcsh,或者/bin/sh成为 bash 或 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。我现在很少使用 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 系统),以及交互式使用和脚本编写。但其他选择是完全合理的,有些可能更适合您。