centos - linux shell编程的时候第一行需要指定要使用的shell,请问!是什么意思
怪我咯
怪我咯 2017-04-17 16:59:30
[Linux讨论组]


不知道这个感叹号就是表示强调还是说在linux下 有别的特殊意义

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(4)
天蓬老师

一般在脚本里#代表注释,但是类似#!/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脚本。

PHPz

在linux中,开头顶格写的#!是固定字符,是提供给内核用来识别可执行格式的。
内核中定义了多种可执行程序文件的可执行格式,当执行文件时,内核会根据预定义好的字符判断该程序是何种可执行文件,当内核看到起始的#!后,就判定该文件为脚本程序,从而调用相应的解释器解释执行该文件。

迷茫

-#!的名字叫Sha-Bang:Sharp for #, Bang for !
作用是告知系统应该用哪个命令解释器执行该脚本

没有!的话shell和Python都会把这一行当做普通注释

阿神

表示用什么编译器。这样该文件只要有执行权限就可以按目录执行了例如./test.sh,否则要根据编译器手动选择编译器类型例如bash test.shphp test.php,python test.python

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号