bash脚本文件中为什么以#!开头

发布网友 发布时间:2022-04-23 12:56

我来回答

1个回答

热心网友 时间:2022-04-14 23:11

在每个bash脚本的开头都使用#!,这用来告诉系统此文件的执行需要指定一个
解释器
。“#!”实际上是一个
2
字节的魔力数字,这是指定一个文件类型的特殊标记,换句话说,
在这里指是一个可执行的脚本(键入
man
magic
来获得关于这个迷人话题的更多详细信息)。在“#!”之后接着是一个路径名,这个路径名指定了一个解释脚本中命令的程序,这个程序可以是
shell,其它编程语言或任意一个通用程序。这个指定的程序
从头开始
解释并且执行脚本中的命令(从#!行下边的一行开始),忽略注释。
如:#!/bin/sh
#!/bin/bash
#!/usr/bin/perl
#!/usr/bin/tcl
#!/bin/sed
-f
#!/usr/awk
-f
上边每一个脚本头的行都指定了一个命令解释器,如果是/bin/sh,那么就是默认shell(在
Linux
系统中默认是
Bash)。使用#!/bin/sh,在大多数商业发行的
UNIX
上,默认是
Bourneshell,这将让你的脚本可以正常的运行在非
Linux
机器上,虽然这将会牺牲
Bash
一些独特的特征。脚本将与
POSIX

sh
标准相一致。
注意:
#!
后边给出的路径名必须是正确的,否则将会出现一个错误消息,通常是Command
not
found,这将是你运行这个脚本时所得到的唯一结果。当然#!也可以被忽略,不过这样你的
脚本文件
就只能是一些命令的集合,不能够使用
shell
内建的指令了。
脚本中的#!行的最重要的任务就是命令解释器(sh
或者
bash)。因为这行是以#开始的,当命令解释器执行这个脚本的时候,会把它作为一个注释行。当然,在这之前,这行语句已经完成了它的任务,就是调用命令解释器。
注:那些具有
UNIX
味道的脚本(基于
4.2BSD)需要一个
4
字节的
魔法数字
,在#!后边需要一个空格#!
/bin/sh。本文来源:《Shell编程从入门到精通》

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com