了解shebang
经常会看到Shell文件首行有个
#!/bin/sh
. 有时没有私护也能运行,不清楚是干嘛的。直到最近在编写Alfred Workflow时才了解到这个叫做Shebang
。这里就mark下。
Shebang
- Shebang即
#!
,如果存在的话一定是该文件第一行的前两个字符。 - 在文件中存在Shebang的情况下,类Unix操作系统的程序加载器会分析Shebang后的内容,将这些内容作为解释器指令,并调用该指令,并将载有Shebang的文件路径作为该解释器的参数。
- 文件可以没有Shebang首行,但文件将不能直接被执行,但如果调用文件执行时直接使用解释器则可以运行。
例子
#!/bin/sh
—使用sh
,即Bourne shell或其它兼容shell执行脚本#!/bin/csh
—使用csh
,即C shell执行#!/usr/bin/env node
—使用node
,即nodejs执行,这里使用env的话,可以避免使用node绝对路径。
node例子
1 |
|
如上在终端下可以直接执行,如果删除首行,直接执行将报错,除非node xxx
执行即可。