AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 5635
Accepted
Andy White
Andy White
Asked: 2009-05-07 22:08:57 +0800 CST2009-05-07 22:08:57 +0800 CST 2009-05-07 22:08:57 +0800 CST

Unix shell 的比较

  • 772
锁定。这个问题及其答案被锁定,因为这个问题离题但具有历史意义。它目前不接受新的答案或交互。

在主要的 Unix shell(bash、ksh、tcsh、zsh 等?)中,是否有任何令人信服的理由来使用一个而不是另一个?

  • 哪个是最交互/命令行友好的?
  • 哪个是编写脚本最有利于/直观的?
  • 是否有任何一个 shell 提供而其他 shell 不提供的主要内置功能?
  • 这些shell中的任何一个真的对一种功能有好处,但对另一种没有好处吗?还是它们都非常全面/灵活?
  • 这只是个人喜好问题吗?

如果有人愿意,我可以制作这个社区 wiki。

linux unix shell
  • 8 8 个回答
  • 4866 Views

8 个回答

  • Voted
  1. Best Answer
    vartec
    2009-05-08T00:05:50+08:002009-05-08T00:05:50+08:00

    当前的:

    • bash— Bourne again shell,大多数 Linux 发行版中的默认 shell。体面的特征;
    • zsh— 功能最丰富,但仍然很少使用;
    • ksh— Solaris、AIX 和其他少数几个 unice 中的默认 shell;
    • tcsh— 各种 *BSD 风格的 unice 中的默认 shell;

    历史性:

    • sh— 原始 Bourne shell(1977 年发布)。被 bash 淘汰;
    • csh— 原始 C shell(1978 年发布)。被 tcsh 和 ksh 淘汰;

    请注意,bash、ksh 和 zsh 派生自 sh 语法,而 tcsh 派生自 csh 语法。这是两种完全不同的语法。

    功能图表(维基)。

    • 17
  2. Peter Hilton
    2009-05-07T23:21:36+08:002009-05-07T23:21:36+08:00

    fish是一个新的 shell,它可能比其他 shell 更有趣,不是因为它一定有更多的特性,而是因为它们默认情况下只是工作,而且因为 fish 致力于可用性。

    几张截图(1 , 2 , 3 , 4)足以给出大致的想法。

    fish 现在是我工作时 Mac 上的默认 shell。去搞清楚。

    • 9
  3. kquinn
    2009-05-08T01:44:39+08:002009-05-08T01:44:39+08:00

    如果你要学习除sh/以外的 shell bash,你还不如去学习zsh. 我认为没有人认真争论它是替代 shell 中最强大和功能最丰富的。当然,是否只是臃肿还有待商榷。

    我听说过关于fish的好消息,但从未努力去打扰它们。

    我认识的管理员认为csh并且tcsh是可憎的,应该不惜一切代价避免,我同意他们的观点,尽管从未被迫让自己经历任何一个外壳。

    • 2
  4. Kyle Brandt
    2009-05-14T09:54:00+08:002009-05-14T09:54:00+08:00

    我建议您了解 bash,因为它是最常见的一种(通常是 Linux 默认值)。就个人而言,我喜欢 zsh 作为我的交互式 shell。它具有出色的完成功能。例如,您可以设置主机列表,当您执行类似 ssh Ser[tab] 之类的操作时,它会知道尝试使用选项卡自动完成其中一个主机。它还具有递归全局,因此如果您想在当前目录和子目录中查找所有 jpeg 文件,您可以使用ls -ld **/*.jpg. zsh 有很多有趣的功能(搜索人们的 .zshrc 文件),您可以将其设置为“bash compatible”,因此可以很容易地在两者之间切换。如果您将它与 GNU Screen 结合使用,您可能会发现命令行变得非常有趣。

    • 2
  5. David Z
    2009-05-07T22:43:20+08:002009-05-07T22:43:20+08:00

    不要忘记您的其他问题最常见的 Unix/Linux shell - 最流行的 shell 可能是最流行的;-)

    对于它的价值,大多数人不会经常在 shell 之间切换,因此很难对各种选项进行全面比较;您将更有可能看到不同的人拥护他们最喜欢的贝壳的优点。根据我对不同 shell 的了解,它们都提供了一些相同的基本功能(如 I/O 重定向、命令历史记录等),因此个人偏好可能是一个很大的组成部分。

    • 1
  6. unhappyCrackers1
    2012-07-06T07:16:22+08:002012-07-06T07:16:22+08:00

    使用 ZSH 的一个没有被提及的令人信服的理由是 vi 模式和 emacs 模式。

    对于那些喜欢在 shell 中使用 vi 肌肉记忆的人来说,这是一个杀手级功能。

    对于那些喜欢 emacs 的人,您也可以使用这些键绑定,但真正的 emacs 信徒可能会说 emacs 是他们最喜欢的 shell。

    ;-)

    • 1
  7. Vincent De Baere
    2009-05-07T22:44:15+08:002009-05-07T22:44:15+08:00

    日常使用的偏好确实是个人喜好的问题,但是,在编写脚本时,为了可移植性,我尽量兼容 posix。

    • 0
  8. lImbus
    2009-05-21T09:57:24+08:002009-05-21T09:57:24+08:00

    就像抬头一样:Ubuntu 默认“sh”为“dash”,这导致过去与 POSIX 兼容性存在一些问题。显然, echo 命令略有不同。

    • 0

相关问题

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve