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

 我来答
手机用户19359
2013-10-22 · 超过67用户采纳过TA的回答
知道答主
回答量:115
采纳率:0%
帮助的人:167万
展开全部
在每个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编程从入门到精通》
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式