扫码关注官方订阅号
不知道这个感叹号就是表示强调还是说在linux下 有别的特殊意义
走同样的路,发现不同的人生
一般在脚本里#代表注释,但是类似#!/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脚本。
在linux中,开头顶格写的#!是固定字符,是提供给内核用来识别可执行格式的。内核中定义了多种可执行程序文件的可执行格式,当执行文件时,内核会根据预定义好的字符判断该程序是何种可执行文件,当内核看到起始的#!后,就判定该文件为脚本程序,从而调用相应的解释器解释执行该文件。
#!
脚本程序
-#!的名字叫Sha-Bang:Sharp for #, Bang for !作用是告知系统应该用哪个命令解释器执行该脚本
没有!的话shell和Python都会把这一行当做普通注释
表示用什么编译器。这样该文件只要有执行权限就可以按目录执行了例如./test.sh,否则要根据编译器手动选择编译器类型例如bash test.sh,php test.php,python test.python
./test.sh
bash test.sh
php test.php
test.python
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
一般在脚本里#代表注释,但是类似#!/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脚本。
在linux中,开头顶格写的
#!
是固定字符,是提供给内核用来识别可执行格式的。内核中定义了多种可执行程序文件的可执行格式,当执行文件时,内核会根据预定义好的字符判断该程序是何种可执行文件,当内核看到起始的
#!
后,就判定该文件为脚本程序
,从而调用相应的解释器解释执行该文件。-#!的名字叫Sha-Bang:Sharp for #, Bang for !
作用是告知系统应该用哪个命令解释器执行该脚本
没有!的话shell和Python都会把这一行当做普通注释
表示用什么编译器。这样该文件只要有执行权限就可以按目录执行了例如
./test.sh
,否则要根据编译器手动选择编译器类型例如bash test.sh
,php test.php
,pythontest.python