#!的解析
Posted simmy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#!的解析相关的知识,希望对你有一定的参考价值。
用Linux写脚本多年,一直未留意这个#!(读作 shabang或shebang),最近看书有提到这个,因此记录之。
#和!都来自于Unix术语,# 发音为sharp, hash或mesh, ! 发音为bang, 因此 #! 连在一起写作 shabang或者shebang(最常用)
符号#! 的作用是指明执行脚本文件的解释程序,在Shebang后面的解释程序如果是一个可执行文件,则当执行脚本时,Shebang会把文件名作为参数传递给解释程序去执行。
如python3.10写的 test.py中的python3.10是解释程序,test.py是文件名,命令行界面运行时需要输入:
python3 test.py
使用#!后,则可省略前面的python3,直接输入./test.py 即可运行Python脚本
一些注意事项:
#!指定的解释程序必须为可执行文件(即 chmod+x test.py),否则系统会报错:Permission denied
如果#! 指定的解释程序不存在,系统会报错:No such file or directory
如果没有#! 系统会默认使用当前shell去解释这个脚本
写法:
#!之后的解释程序必须写绝对路径,因为它不会自动到$PATH中寻找运行环境,例子如下:
#!/bin/bash
#!/bin/perl
#!/bin/python
#!/usr/bin/env python3
#!/usr/bin/env python2
以上是关于#!的解析的主要内容,如果未能解决你的问题,请参考以下文章