Bash 和 Shell 脚本有什么区别

问题描述 投票:0回答:4

我为 UNIX 和 Windows 编写脚本已经快三年了。我一直对这两个术语感到困惑,有一段时间我认为 bash 脚本是 Windows cmd 脚本,而 shell 脚本是 UNIX 脚本,但我发现这是不正确的。那么 BASH 和 Shell 脚本这两个术语有什么区别呢?

linux bash shell cmd scripting
4个回答
10
投票

“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
都是命令解释器。


3
投票

同样,WindowsLinuxMacOSX操作系统,或者奥迪福特雪佛兰汽车:windows的cmd.exeBASHZSHCSHTCSHKorn ShellBourne Shell...只是不同种类的 shell

一般来说,“外壳”是一个类比,旨在设计能够访问系统“核心”的用户界面。因此,在这种情况下,shell 是用于操作系统的文本界面(也称为 命令行界面 又名 CLI)。

现在,当您谈论“shell 脚本”时,它只是使用为用户界面开发的语言来自动执行该系统上的任务。现有一些面向图形的脚本(例如 Office 的宏),但大多数时候它是关于创建“批处理”文件(Dos/Windows 上的 .bat)或在 Unix 世界中称为“shell 脚本”的内容。

这里有一些维基百科文章,可以阅读更多相关内容:


2
投票

Shell 脚本是可以由系统 shell 运行的任何脚本的总称。

现在编写一个接受命令并执行它们的程序——类似于 REPL/命令解释器。

sh
是一个外壳。
bash
fish
zsh
等也是如此

cmd
有时称为 Windows shell,但
windows shell
是 Windows UI 的正式名称。微软称其为
command interpreter
(更多名称混淆)。

cmd
msdos
的脚本通常称为“批处理脚本”。

所以在 *nix 领域,通常是:“bash”执行“shell 脚本”。在 Windows 环境中:“cmd”(dos 提示符)执行“批处理脚本”。


0
投票

根据维基百科:

shell 脚本是一种设计为由 Unix 运行的计算机程序 shell,一个命令行解释器。[1] shell的各种方言 脚本被认为是脚本语言。

来源:https://en.wikipedia.org/wiki/Shell_script

Bash 是一个命令处理器,通常在文本窗口中运行, 用户键入导致操作的命令的位置。 Bash 也可以读取 来自称为脚本的文件的命令。

换句话说,bash只是一个shell(流行的一种),而shell脚本是可以被shell解释的脚本。以下是满足您好奇心的 shell 列表:https://en.wikipedia.org/wiki/Unix_shell#Shell_categories

© www.soinside.com 2019 - 2024. All rights reserved.