我已经为UNIX和Windows编写脚本已经将近3年了。 我一直对这两个术语感到困惑,有一段时间我以为bash脚本是windows cmd脚本,而shell脚本是UNIX脚本,但是我知道这是不正确的。 那么这两个术语之间有什么区别:BASH和Shell脚本?
“Shell脚本”是由shell执行的脚本的通用术语。
“Bash脚本”是一个更具体的术语; 它是指由一个特定的shell( Bash shell)执行的脚本。
一个shell是一个命令解释程序。 它可以以交互方式使用(用户在提示符下键入命令,shell执行它们),或者作为脚本的解释器(其中一系列命令写入文件中)。
Bourne shell是UNIX上较老的shell之一(不是最古老的,但我们不用担心古代的历史)。 其他几个shell已经被实现为Bourne shell的替代品或扩展。
特别是, GNU Bash可能是现在最常用的shell。 它实现了与Bourne shell相同的功能以及一些扩展。
Bourne shell脚本通常以“Shebang”行开头:
#!/bin/sh
Bash脚本通常以指定Bash shell的Shebang开始:
#!/bin/bash
并可能依赖于由Bash实现的功能,但不依赖于Bourne shell。
(在某些操作系统上, /bin/sh
可能与/bin/bash
命令相同。)
并不是所有的Unix shell都基于Bourne shell。 特别是, csh
及其派生tcsh
在很大程度上与Bourne衍生的shell不兼容。
除了Bash和cmd.exe
都是命令解释器之外,Bash与Windows cmd
脚本很少有关系。
Shell脚本是可以由系统shell运行的任何脚本的通用名称。
现在shell程序,需要命令并执行它们 – 一种REPL /命令解释器。 sh
是一个shell。 那么是bash
, fish
, zsh
等
cmd
有时被称为Windows外壳,但windows shell
是Windows用户界面的正式名称。 微软称之为command interpreter
(更多名称混淆)。
cmd
和msdos
的脚本通常被称为“批处理脚本”。
所以在* nix的地方通常是:“bash”执行“shell脚本”。 并在Windows的土地上:“cmd”(DOS提示符)执行“批处理脚本”。
与Windows , Linux和MacOSX 操作系统一样 , 奥迪 , 福特或雪佛兰也是汽车 :windows cmd.exe , BASH , ZSH , CSH , TCSH , Korn Shell , Bourne Shell …都是不同类型的shell 。
一般来说,“shell”就是设计用户界面的一个类比,它可以访问系统的“核心”。 所以在这种情况下,shell是用于操作系统的文本接口(也称为CLI 命令行界面 )。
现在,当您谈论“shell脚本”时,只是使用为用户界面开发的语言来自动化该系统上的任务。 现在有一些面向图形的脚本(像Office的宏),但大部分时间是关于创建一个“批处理”文件(Dos / Windows上的.bat),或者是Unix系统中被称为“shell脚本”的文件。
这里有一些维基百科文章阅读更多关于它:
根据维基百科:
一个shell脚本是一个计算机程序,被设计成由Unix shell,一个命令行解释器来运行[1]。 shell脚本的各种方言被认为是脚本语言。
来源: https : //en.wikipedia.org/wiki/Shell_script
Bash是一个命令处理器,通常运行在文本窗口中,用户键入导致操作的命令。 Bash也可以从一个称为脚本的文件读取命令。
换句话说,bash只是一个shell(一个流行的),shell脚本是一个shell可以解释的脚本。 以下是您的好奇心的列表: https : //en.wikipedia.org/wiki/Unix_shell#Shell_categories