[linux-脚本]shebang(shabang #!)

使用Linux或者unix系统的人们对#!这个符号都不陌生,但要说出个具体的因此然来,不少人估计还真不行,咱们有必要就此整理一下。Shebang这个符号一般在Unix系统的脚本中第一行开头中写到,它指明了执行这个脚本文件的解释程序。具体地:bash

  • 1. 若是脚本文件中没有#!这一行,那么它执行时会默认用当前Shell去解释这个脚本(即:$SHELL环境变量)。
  • 2. 若是#!以后的解释程序是一个可执行文件,那么执行这个脚本时,它就会把文件名及其参数一块儿做为参数传给那个解释程序去执行。
  • 3. 若是#!指定的解释程序没有可执行权限,则会报错“bad interpreter: Permission denied”。若是#!指定的解释程序不是一个可执行文件,那么指定的解释程序会被忽略,转而交给当前的SHELL去执行这个脚本。
  • 4. 若是#!指定的解释程序不存在,那么会报错“bad interpreter: No such file or directory”。  注意:#!以后的解释程序,须要写其绝对路径(如:#!/bin/bash),它是不会自动到$PATH中寻找解释器的。
  • 5. 固然,若是你使用”bash test.sh”这样的命令来执行脚本,那么#!这一行将会被忽略掉,解释器固然是用命令行中显式指定的bash。

咱们能够本身写一个解释器来验证一下这些点。spa

相关文章
相关标签/搜索