我已经为UNIX和Windows编写了近3年的脚本。我一直对这两个术语感到困惑,有一段时间我认为bash脚本是windows cmd脚本,而shell脚本是UNIX脚本,但我已经知道这是不对的。那么这两个术语有什么区别:BASH和Shell脚本?
答案 0 :(得分:5)
" 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与Windows cmd
脚本几乎没有关系,只是Bash和cmd.exe
都是命令解释器。
答案 1 :(得分:2)
Shell脚本是可以由系统shell运行的任何脚本的通用名称。
现在shell一个接受命令并执行它们的程序 - 一种REPL /命令解释器。 sh
是一个shell。 bash
,fish
,zsh
等
cmd
有时称为Windows shell,但windows shell
是Windows UI的官方名称。微软称之为command interpreter
(更多名称混淆)。
cmd
和msdos
的脚本通常称为"批处理脚本"。
所以在* nix的土地上通常是:" bash"执行" shell脚本"。在窗户的土地上:" cmd" (dos提示)执行"批处理脚本"。
答案 2 :(得分:1)
Windows , Linux 和 MacOSX 的方式与操作系统或 Audi 同样 em>, Ford 或 Chevrolet 是汽车:windows' cmd.exe , BASH , ZSH , CSH , TCSH , Korn Shell , Bourne Shell ...只是不同种类的 shell 。
一般来说,“shell”类似于设计用户界面,可以访问系统的“核心”。因此,在这种情况下,shell是用于操作系统的文本界面(也称为命令行界面又名 CLI )。
现在,当您谈论“shell脚本”时,它只是使用为用户界面开发的语言来自动化该系统上的任务。存在一些以图形为导向的脚本(如Office的宏),但大多数时候它是关于创建“批处理”文件(Dos / Windows上的.bat)或者unix世界中的什么称为“shell脚本”。 / p>
以下是一些维基百科文章,可以阅读更多相关内容:
答案 3 :(得分:0)
根据维基百科:
shell脚本是一个旨在由Unix运行的计算机程序 shell,命令行解释器。[1]各种方言的贝壳 脚本被认为是脚本语言。
来源:https://en.wikipedia.org/wiki/Shell_script
Bash是一个通常在文本窗口中运行的命令处理器, 用户键入导致操作的命令。 Bash也可以阅读 来自文件的命令,称为脚本。
换句话说,bash只是一个shell(一个流行的),而shell脚本是一个可以由shell解释的脚本。以下列出了好奇心的shell:https://en.wikipedia.org/wiki/Unix_shell#Shell_categories