`
jubincn
  • 浏览: 242715 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

在每个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编程从入门到精通》

分享到:
评论

相关推荐

    shell中第一行#!_bin_bash的作用

    这段脚本在AIX系统下执行时,会在`/tmp`目录下生成一个名为`test.log`的文件,其中包含一条消息:“a test message!”。但如果将`#!/bin/ksh`改为`#!/bin/csh`,脚本将无法正确执行,因为csh中不存在`export`命令。 ...

    #!/usr/bin/expect

    在给定的压缩包文件中,ssh_run.sh 可能是一个使用 Expect 编写的SSH自动化脚本。你可以通过查看和分析这个脚本来深入了解 Expect 的具体用法。在实际工作中,掌握 Expect 能大大提高你的工作效率,尤其是在需要处理...

    高级Bash脚本编程指南 操作系统 - Linux - 高级Bash脚本编程指南.zip

    Bash脚本是一种文本文件,其中包含了可执行的Shell命令。它允许你自动化日常任务,例如文件管理、系统监控、数据处理等。脚本的开头通常会声明其解释器,即`#!/bin/bash`,这告诉系统使用Bash来执行该脚本。 在Bash...

    bash脚本编写教程

    在Bash中,以`#`开头的行被视为注释,方便理解脚本的功能和逻辑。良好的注释习惯能够帮助你和他人快速理解脚本内容。 ### 变量 在Bash中,变量不需要声明即可使用,它们默认为字符串类型。赋值给变量时,直接写作`...

    高级Bash脚本编程指南

    处理数字时,Bash脚本支持十进制、十六进制(以`0x`开头)、八进制(以`0`开头)格式。 #### 六、进阶话题:变量与字符串处理 ##### 9. 内部变量 Bash提供了丰富的内部变量,如`$SHELL`(当前shell),`$RANDOM`...

    30分钟搞定BASH脚本编程.txt

    从给定的文件信息中,我们可以提取出关于BASH脚本编程的重要知识点,这些知识点涵盖了从基础知识到高级功能的广泛范围。 ### BASH脚本基础 #### Hello World示例 脚本通常以`#!/bin/bash`行开头,这被称为shebang...

    Linux Bash脚本大全.pdf

    - **Sha-Bang的使用:** 在Bash脚本中,第一行通常包含一个“Sha-Bang”(即`#!/bin/bash`),用于指定解释器路径,告诉系统使用哪个Shell来执行脚本。 - **变量与参数:** - **变量替换:** 变量替换允许在脚本中...

    shell脚本生成.txt数据文件

    /bin/bash`开头,这是告诉系统使用Bash shell解释器来执行脚本中的命令。接下来是命令行,它们按照执行顺序排列。例如,如果你想要创建一个空的`.txt`文件,可以使用`touch`命令: ```bash #!/bin/bash touch ...

    shell教程(一个很不错的bash脚本编写教程)

    - **注释**:在Shell脚本中,以`#`开头的行被视为注释行,会被Shell忽略。注释用于解释脚本的目的或某些操作的含义,对于代码的可读性和维护性非常重要。 - **变量赋值与引用**: - 赋值:`a="hello world"`。变量...

    非常好的BASH脚本编写教程

    在BASH脚本编写中,首先需要了解如何创建一个脚本。默认情况下,大多数Linux发行版都使用BASH作为默认shell。创建脚本时,可以使用任何文本编辑器,如nedit、kedit、emacs、vi等。脚本的第一行应包含“#!/bin/bash”...

    shell 高级bash脚本编程指导中文翻译版本

    1. 为什么使用Shell编程? - 自动化操作:可以快速执行重复性的任务,比如批量移动或重命名文件。 - 简化任务:通过编写脚本,可以将复杂的命令序列简化为单一的命令。 - 跨平台兼容:Shell脚本可以在所有UNIX-...

    高级Bash 脚本编程指南.pdf

    4. **函数**:Bash脚本中可以定义函数,方便代码重用。例如,`function myfunc() { commands; }`定义了一个名为myfunc的函数。 二、高级特性 1. **数组**:Bash从版本4开始支持关联数组,这使得处理多个相关值变得...

    linux-一个bash脚本旨在使用基本参数解析创建其他bash脚本

    这个特定的项目,名为"linux-一个bash脚本旨在使用基本参数解析创建其他bash脚本",显然是一个教学或实用的示例,它教授如何利用Bash脚本的内置参数解析功能来创建新的Bash脚本。在Linux开发中,掌握这样的技能是至...

    shell脚本可配置化读取文件夹中文件名称.rar

    /bin/bash`开头,这被称为“shebang”,指示系统使用bash shell来解释接下来的脚本。然后,我们可以在脚本中编写命令和逻辑。 在描述中提到的"可配置化"读取文件名,意味着脚本应该能够根据用户的需求或配置进行...

Global site tag (gtag.js) - Google Analytics