不知道这个感叹号就是表示强调还是说在linux下 有别的特殊意义
在linux中,开头顶格写的#!
是固定字符,是提供给内核用来识别可执行格式的。
内核中定义了多种可执行程序文件的可执行格式,当执行文件时,内核会根据预定义好的字符判断该程序是何种可执行文件,当内核看到起始的#!
后,就判定该文件为脚本程序
,从而调用相应的解释器解释执行该文件。
-#!的名字叫Sha-Bang:Sharp for #, Bang for !
作用是告知系统应该用哪个命令解释器执行该脚本
没有!的话shell和Python都会把这一行当做普通注释
表示用什么编译器。这样该文件只要有执行权限就可以按目录执行了例如./test.sh
,否则要根据编译器手动选择编译器类型例如bash test.sh
,php test.php
,python test.python
7 回答5.3k 阅读
4 回答4k 阅读
2 回答5.9k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
2 回答799 阅读✓ 已解决
2 回答3.2k 阅读
一般在脚本里#代表注释,但是类似#!/bin/bash,#!/usr/bin/env php,#!/usr/bin/env python3这样的不是注释,是指定脚本执行的程序,#!/bin/bash是说该脚本直接使用系统的bash执行,如果不指定,默认也是#!/bin/bash,但是这个只有你的脚本确实是类bash脚本时就会成功。比如后面的#!/usr/bin/env php就是指定执行php脚本的。如果没有这样,一个简单的php脚本test.php就只能用系统能执行的命令 php test.php来执行,但指定后就可以直接执行./test.php脚本。