shell脚本中的开头#!/bin/bash #!/bin/sh是什么含义

标准的shell脚本文件中,其第一行通常是:#!/bin/bash 或 #!/bin/sh ,以经典的HelloWorld为例,shell脚本如下:

#!/bin/bash
echo "Hello World!"

那么#!/bin/bash到底是什么含义?

问答这个问题之前,我们先了解下shell版本进化历史,具体可以参考:Linux Shell进化简史

了解完shell版本进化后,我们开始深究#!/bin/bash到底是什么含义:

1、shell脚本是解释性语言

shell脚本需要专门的解析器来解析然后执行,不同的脚本语言需要匹配对应的解析器才能解析执行。#!/bin/bash 表示用/bin/bash解释脚本并执行,#!/bin/sh表示用/bin/sh解释脚本并执行。再比如python也是解释性编程语言,可以作为脚本编程语言,格式如下:

#!/usr/bin/python2.7
print("Hello World!")

常见的shell解释器有:

  • Bourne Shell(/usr/bin/sh或/bin/sh)
  • Bourne Again Shell(/bin/bash)
  • C Shell(/usr/bin/csh)
  • K Shell(/usr/bin/ksh)
  • Shell for Root(/sbin/sh)

linux默认一般都是/bin/bash,这也是我们看到大部分shell脚本其第一行都是#!/bin/bash的原因。

2、shell脚本并非所有#都表示注释

#!/bin/bash 是唯一#开头但是不表示注释。

3、#!/bin/bash只能在脚本文件第一行才有效

你可能感兴趣的:(运维)