Bash脚本:#!/ bin / bash是什么意思?

在bash脚本中,第一行的#!/bin/bash是什么意思?

更新#!/bin/bash#!/bin/sh之间有区别吗?

这被称为shebang ,它在执行时告诉shell用什么程序来解释脚本。

在你的例子中,脚本是由bash shell来解释和运行的。

其他一些示例如下:

(来自维基百科)

 #!/bin/sh — Execute the file using sh, the Bourne shell, or a compatible shell #!/bin/csh — Execute the file using csh, the C shell, or a compatible shell #!/usr/bin/perl -T — Execute using Perl with the option for taint checks #!/usr/bin/php — Execute the file using the PHP command line interpreter #!/usr/bin/python -O — Execute using Python with optimizations to code #!/usr/bin/ruby — Execute using Ruby 

还有一些额外的东西,我可以从头顶上思考,比如:

 #!/bin/ksh #!/bin/awk #!/bin/expect 

例如,在一个带有bash文件的脚本中,你可以用bash语法编写你的代码; 而在一个期望shebang的脚本中,你可以用期望的语法编码,等等。

对更新部分的回应:

这取决于/bin/sh实际上指向您系统上的内容。 通常它只是/bin/bash的符号链接。 有时候可移植的脚本是用#!/bin/sh编写的,只是为了表示它是一个shell脚本,但它使用了/bin/sh引用的特定系统上的任何shell(可能指向/bin/bash/bin/ksh/bin/zsh

在bash脚本中,第一行的#!/ bin / bash是什么意思?

在Linux系统中,我们有解释我们的UNIX命令的shell。 现在在Unix系统中有一些shell。 其中有一个叫做bash的shell,它是非常常见的Linux,历史悠久。 这是Linux中的默认shell。

当你编写一个脚本(unix命令集合等)时,你可以select指定哪个shell可以使用。 一般来说,你可以通过使用Shebang (是的,这就是它的名字)指定哪个shell。

所以,如果你在你的脚本的顶部有#!/ bin / bash,那么你要告诉你的系统使用bash作为默认的shell。

现在回到第二个问题:#!/ bin / bash和#!/ bin / sh之间有区别吗?

答案是肯定的 当你告诉#!/ bin / bash时,你告诉你的环境/ os使用bash作为命令解释器。 这是硬编码的东西。

每个系统都有自己的shell,系统将用它来执行自己的系统脚本。 这个系统的shell可以根据操作系统的不同而变化(大部分时间是bash,最近Ubuntu使用短划线作为默认的系统shell)。 当你指定#!/ bin / sh时,系统将使用它的内部系统shell来解释你的shell脚本。

在我已经解释过这个主题的地方访问这个链接以获取更多信

希望这会消除你的困惑…祝你好运。

当脚本中的第一个字符是#! 那就是所谓的she </s> 。 如果你的文件以#!/path/to/something那么标准就是运行something并把文件的其余部分作为input传递给那个程序。

这就是说, #!/bin/bash#!/bin/sh ,甚至#!/bin/zsh之间的区别在于bash,sh或者zsh程序是用来解释文件的其余部分的。 bashsh只是传统的不同的程序。 在一些Linux系统上,它们是同一个程序的两个副本。 在其他的Linux系统上, shdash的链接,而在传统的Unix系统(Solaris,Irix等)上, bash通常是与sh完全不同的程序。

当然,其余的线路不一定要以sh结尾。 它也可以是#!/usr/bin/python#!/usr/bin/perl ,甚至#!/usr/local/bin/my_own_scripting_language