【问题标题】:What goodies are present in UNIX shells sans BASH?没有 BASH 的 UNIX shell 中有哪些好东西?
【发布时间】:2010-10-09 03:02:43
【问题描述】:

自从我使用 Unix-Linux/Solaris 以来,我一直在使用“bash”。现在,我很想知道像 'ksh'、'zsh' 这样的 shell 提供什么更好? “极客”有什么用?

【问题讨论】:

    标签: bash unix shell


    【解决方案1】:

    我偏爱 zsh(它就像 ksh 和 bash 的混合体)。 guide 很好地概述了它的功能。这个page 有一个很好的图表,显示了不同 shell 中不同功能的可用性。

    【讨论】:

      【解决方案2】:

      我安装了一个来提供每个会话的 shell 历史记录。

      这里的独特之处在于每个窗口都有自己的 shell 历史。很方便。

      【讨论】:

      • 我自己用 ksh 做的。我现在不这样做,但我认为您可以使用 zsh 完成此操作,并且可能使用 bash。
      • 在某些系统上,我通过将 .history(或者是 .sh_history)符号链接到 /dev/null 来获得它。在其他人身上,我必须编译一个自定义 shell。
      【解决方案3】:

      我偏好使用 ksh93。这意味着我发现自己使用的几乎所有系统都可以使用 ksh 的基础知识,因此我的交互体验和 98% 的复杂配置文件保持不变。

      【讨论】:

      • +1 如果您通常使用单个(或其他少量)*nix OS 风格,那么任何 shell 都可以。如果您使用“一些”或“很多”不同的操作系统风格,那么 ksh 应该会快速跳到首选 shell 列表的顶部。我从来没有发现没有将 ksh 作为默认 shell 的 *nix。
      【解决方案4】:
      • bash:根据我的经验,大多数人使用 bash,部分原因是它是大多数 Linux 系统中的标准 shell。

      • ksh:许多 Solaris 系统改用 ksh,但这似乎正在失去对 bash 的普及。

      • csh:Csh 曾经更流行,但通常被 tcsh 取代。 tcsh 对于那些非常熟悉类 c 语法的人来说还不错。

      • zsh:我没用过zsh,不过好像功能很丰富。

      就个人而言,我更喜欢 bash,因为它几乎安装在所有与 unix 兼容的操作系统上,用途广泛,是简单命令行工具和脚本语言之间的良好折衷。

      【讨论】:

        【解决方案5】:

        bash 有点慢,但像许多 FSF 程序一样,它试图合并所有已知的功能。我使用ksh93,它在很大程度上与bash 融合。 ksh 的主要优点是它有一个很好的接口,可以用 C 代码扩展 shell。它也更容易定制,例如,让 tab 键在上下文中做任何你想做的事情。缺点是没有内置命令补全;您必须对其进行编程。

        避免使用csh 及其派生词 :-)

        【讨论】:

          【解决方案6】:

          根据我的经验,标准 Unix shell(对我而言,这意味着 cshshksh)中很少有在 @987654324 中至少以等效形式存在的好东西@。因此,只要您对 bash 将在您的所有计算机上感到满意,您也可以使用它来获得最大的功能。

          OTOH,如果您想处理可移植性,您可能会使用ksh,它非常接近 POSIX 标准 - 带有一些扩展(bash 也非常接近 POSIX 标准,但有更多扩展) .

          我真的很喜欢 POSIX $(cmd) 符号来代替经典的反引号

          `cmd`
          

          (这在 Markdown 中可不好玩!)。喜欢它的一个主要原因是嵌套调用要容易得多:

          gcclib=$(dirname $(dirname $(which gcc)))/lib
          

          用反引号把它写在一条线上是很愚蠢的,你不会试图把它变成一条线。那是在kshbash;它不在经典的 Bourne shell 中(/bin/sh,但请注意,某些机器上的 /bin/sh 不是经典的 Bourne shell 而是伪装的 bash),也不在 C shell 中。

          【讨论】:

            【解决方案7】:

            最好知道 Bash 具有最广泛的兼容性,您基本上可以坐在任何 Unix 上,它会在那里。

            Zsh 可能是最现代的 shell 之一。你可以用它做各种疯狂有趣的事情

            【讨论】:

              【解决方案8】:

              如果您正在使用 bash 并且对它感到满意,则无需立即更改。这是一个很好的外壳。了解它的历史也会告诉你一些事情:Bourne Again SHell。这是一个比 C-Shell 及其衍生工具(如 tcsh)更好的 shell 的尝试,允许您使用 /bin/sh 语法来编写脚本(或用于交互使用),但添加了一些 csh 更好的特性(如历史等)。

              无论如何,在概念上,Korn shell 和 Bash 有很多共同点。与 /bin/sh 一样,Korn shell 最初来自 AT&T,直到最近才开源。它有一个很好的历史机制,并且对历史状态文件进行文件锁定,因此如果它们安装在网络文件服务器上,shell 的多个副本将正确地写入历史文件而不会相互破坏。它还支持 /bin/sh 语法,并结合了 /bin/csh 的一些优点。 ksh 有很多东西,如果你能找到它,它通常是一个相当不错的 shell。我曾经在 Solaris 上使用它,尤其是当我在 Sun 工作时。我不想安装操作系统不附带的任何东西,因为我每周安装几次新操作系统,所以这是一个不错的选择。

              现在我使用 Bash 或 zsh。我更喜欢 zsh,因为它具有丰富的命令完成功能和一般编写 shell 函数的功能(对于我的交互式 shell——在编写脚本时,我坚持使用非常标准的 Bourne shell 东西)。

              正如其他人所说,最好避免使用任何版本的 C-shell,除了那些为您提供 /bin/csh 的某些功能但不是从 /bin/csh 代码派生的 shell。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2012-02-13
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2020-03-11
                • 2021-05-10
                相关资源
                最近更新 更多