【问题标题】:Is Bash an interpreted language?Bash 是解释型语言吗?
【发布时间】:2015-07-21 06:56:28
【问题描述】:

从我目前阅读的内容来看,bash 似乎符合解释语言的定义:

但是,我在 Wikipedia's page for interpreted languages 上或在 Google 上的大量搜索中找不到对 bash 的引用。我还在 Programmers Stack Exchange 上找到了a page,这似乎暗示 bash 不是一种解释型语言——如果不是,那它是什么?

【问题讨论】:

  • 澄清一下 - 提示您的问题是因为您不确定维基百科上的特定页面是否可以 100% 完整和正确?
  • 这似乎是一种引发争论的问题,每个人都同意实际发生的事情,但每个人对如何定义术语都有强烈和相互矛盾的意见。我只是尽量避免这个话题。
  • @GregHewgill 更新问题以澄清。
  • 我认为 bash 是一种解释性语言,这是毫无疑问的,但这是我的观点。您是否正在寻找支持该观点的参考资料?
  • 我会发布一个答案,只是说“是。”,有点太短会被拒绝。

标签: bash shell scripting-language interpreted-language compiled-language


【解决方案1】:

Bash 是根据GNU Bash Reference Manual 的解释器:

Bash 是 GNU 操作系统的 shell 或命令语言解释器。

【讨论】:

    【解决方案2】:

    Bash 绝对是解释的;我认为没有任何合理的问题。

    对于它是否是一种语言,可能存在一些争议。它主要设计用于交互式使用,执行操作系统提供的命令。对于很多这种特殊的用法,如果你只是输入类似的命令

    echo hello
    

    cp foo.txt bar.txt
    

    很容易认为它“只是”用于执行简单的命令。从这个意义上说,它与 Perl 和 Python 等解释型语言完全不同,尽管它们可以以交互方式使用,但主要用于编写 脚本(解释型程序)。

    这种强调的一个结果是它的设计针对交互式使用进行了优化。字符串不需要引号,大多数命令在输入后立即执行,您使用它执行的大多数操作都会调用外部程序而不是内置功能,等等。

    但正如我们所知,也可以使用 bash 编写脚本,并且 bash 有很多特性,尤其是流控制结构,主要用于脚本中(尽管它们也可以在命令行中使用)。

    bash 和许多脚本语言之间的另一个区别是 bash 脚本是按顺序读取、解析和执行的。 bash 脚本中间的语法错误在执行到达它之前不会被检测到。相比之下,Perl 或 Python 脚本在开始执行之前被完全解析。 (eval 之类的东西可以改变这一点,但一般的想法是有效的。)这是一个显着的差异,但它并不标志着一个明显的分界线。如果有的话,它使 Perl 和 Python 更类似于编译语言。

    底线:是的,bash 是一种解释型语言。或者,也许更准确地说,bash 是解释语言的解释器。 (名称“bash”通常指的是 shell/解释器,而不是它解释的语言。)它与从一开始就为脚本设计的其他解释语言有一些显着差异,但这些差异不足以消除它来自“解释语言”的类别。

    【讨论】:

    • +1。回复:“关于它是否是一种 语言 可能存在一些争议”:或者可能是 编程语言。例如,我认为更多的人会接受 HTML 被浏览器“解释”,而不是接受它是“解释语言”,因为“解释语言”意味着“解释编程语言”,假定排除标记语言。
    猜你喜欢
    • 2011-11-09
    • 1970-01-01
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    相关资源
    最近更新 更多