【问题标题】:Are Bash and Linux shell the same?Bash 和 Linux shell 是一样的吗?
【发布时间】:2010-01-13 18:22:58
【问题描述】:

我经常对 bash 和 shell 感到困惑。他们是一样的吗?如果我想学习 bash,会不会被 Linux shell 编程相关的书籍所覆盖?我使用 Ubuntu Linux。

编辑:(得到两个答案后添加。)bash如何与终端关联?

【问题讨论】:

    标签: linux bash shell


    【解决方案1】:

    bash 是一种特殊类型的 Linux shell(Bourne Again shell),但还有很多其他类型。在 Ubuntu 中,bash 是默认设置。我确信有很多关于它的 shell 编程书籍,我过去读过一本。

    【讨论】:

    • 其实dash是默认的Ubuntu shell。
    • Dash 是默认的 /bin/sh,但默认的登录 shell 仍然是 Bash。
    【解决方案2】:

    这个问题有点陈旧,但我想我可能会按照问题第二部分的要求澄清终端和 shell 之间的区别。您可以将终端视为显示设备。如今,它最典型的是一个程序,但曾经有一段时间,终端是一个单独的盒子。当你启动终端程序时,它会向本地系统发送一个唤醒信号。在过去,物理终端通过(通常为 RS232)连接向终端接口发送电信号。在任何一种情况下,操作系统都会将“登录”文本发送回发送唤醒信号的任何设备或程序。还没有涉及到shell。

    操作系统通过验证用户名和密码(如果有)来完成登录。然后,它会检查密码文件中已验证用户的条目以获取该用户首选 shell 的名称。创建帐户时分配了一个默认 shell,用户通常可以稍后更改该分配。操作系统启动shell程序,shell继承与终端相连的通信路径。终端程序仍然存在,显示发送给它的文本并将用户键入的内容发送回通信线路。现在它是另一端的外壳,而不是操作系统。

    任何程序都可以被指定为用户初始登录shell。将“日期”程序指定为登录 shell 是可能的,但不是很有用。在这种情况下,用户登录后只会看到显示在其终端窗口中的日期,然后会被注销。终端和shell的区别在于终端一直都在,与用户进行监听和交谈。它不解释击键(除了映射到字符集)。 shell 是操作系统启动的(或用户稍后以类似堆栈的方式添加)以处理终端通信线路另一端的通信。它决定响应用户的击键而采取的行动。

    【讨论】:

      【解决方案3】:

      取自linuxcommand.gds.tuwien.ac.at

      简单地说,shell就是一个程序 这需要你的命令 键盘并将它们交给 要执行的操作系统。在里面 过去,它是唯一的用户 Unix 上可用的接口 电脑。现在,我们有图形 用户界面 (GUI) 除了 命令行界面 (CLI),例如 外壳。

      在大多数 Linux 系统上,一个名为 bash(代表再次伯恩 SHell,增强版 原始的 Bourne shell 程序,sh, 由史蒂夫伯恩撰写)充当 外壳程序。有几种 其他可用的 shell 程序 一个典型的Linux系统。这些包括: ksh、tcsh 和 zsh。

      【讨论】:

        【解决方案4】:

        “bash”是 Linux 的许多可用“shell”之一,即"bash" typeof "shell" == true

        【讨论】:

        • 这是否意味着当我从 ubuntu 桌面打开终端时,它会在 bash 上运行?它是如何与终端关联的?
        • Ubuntu Linux 上的“终端”在“破折号”(外壳......还是“bash”,我现在不确定)进程上显示一个窗口,是的。
        • 这是什么可怕的伪语言?
        【解决方案5】:

        没有。 bash 是一个外壳。从技术上讲,Linux 不是 shell,实际上是内核,但许多不同的 shell 可以在其上运行(bash、tcsh、pdksh 等)。 bash 恰好是最常见的一种。

        【讨论】:

        • ssh 服务器是否默认公开 bash shell? (我不会花更多时间在 linux 上,而且我大部分时间都在做午夜黑客)抱歉这么多问题。
        • ssh 服务器使用用户登录的首选登录 shell(参见 chsh(1) 手册页)。
        【解决方案6】:

        不,它们不一样,是的,linux shell 编程书籍应该有重要的部分或完全是关于 bash 脚本的。

        Ubuntu 是一个包含 bash 作为可用 shell 的 linux 发行版。当您在 Ubuntu 中打开终端时,您将打开一个模拟具有一定数量的行和列的显示的屏幕。 Bash 是一个可以在终端上运行并允许您与系统交互的程序。它很像 windows 命令窗口中的 dos 提示符,如果你熟悉的话。

        你可以有多个 shell,但很多人更喜欢 bash,而且你最好先学习它。

        祝你好运!

        【讨论】:

          【解决方案7】:

          试试:http://en.wikipedia.org/wiki/Unix_shell 提示:Bash 是一种 Unix shell。

          【讨论】:

            【解决方案8】:

            为了使某些脚本在 AIX 和 Linux 之间可移植,我必须有特定的逻辑来确定框类型并运行某些命令的变体。

            例如:

            如果您使用 '\c' 来阻止回显末尾的换行符,则必须更改为“echo -n”。

            另外,ping 语法也有一些变化。

            我认为大多数命令将大致相同,偶尔会有一些细微的细微差别。

            【讨论】:

            • ping 语法与 shell 无关。事实上,这个答案与 OP 的问题几乎没有太大关系。
            猜你喜欢
            • 2015-09-14
            • 1970-01-01
            • 2011-03-14
            • 2014-05-06
            • 2016-10-03
            • 1970-01-01
            • 2017-04-26
            • 2010-11-15
            • 2021-07-15
            相关资源
            最近更新 更多