Bash 肯定是被解释的;我不认为有任何合理的问题。
关于它是否是一种语言可能存在一些争议。它主要设计用于交互式使用,执行操作系统提供的命令。对于很多特定类型的用法,如果您只是输入命令,例如
echo hello
或者
cp foo.txt bar.txt
很容易认为它“只是”用于执行简单的命令。从这个意义上说,它与 Perl 和 Python 等解释型语言完全不同,尽管它们可以交互使用,但主要用于编写脚本(解释型程序)。
这种强调的一个结果是它的设计针对交互式使用进行了优化。字符串不需要引号,大多数命令在输入后立即执行,您使用它执行的大多数操作将调用外部程序而不是内置功能,等等。
但正如我们所知,也可以使用 bash 编写脚本,并且 bash 有很多特性,尤其是流控制结构,主要用于脚本中(尽管它们也可以在命令行中使用)。
bash 和许多脚本语言之间的另一个区别是 bash 脚本是按顺序读取、解析和执行的。bash 脚本中间的语法错误在执行到达它之前不会被检测到。相比之下,Perl 或 Python 脚本在执行开始之前就被完全解析。(类似的事情eval
可以改变这一点,但一般的想法是有效的。)这是一个显着的差异,但它并不标志着一个清晰的分界线。如果有的话,它使 Perl 和 Python 更类似于编译语言。
底线:是的,bash 是一种解释型语言。或者,也许更准确地说,bash 是解释语言的解释器。(名称“bash”通常指的是 shell/解释器,而不是它解释的语言。)它与从一开始就为脚本设计的其他解释语言有一些显着差异,但这些差异不足以消除它来自“解释语言”的类别。