认识Linux 的shebang行,一个特殊的注释行

😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD

如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。

😊 座右铭:不想当开发的测试,不是一个好测试✌️。

如果感觉博主的文章还不错的话,还请点赞、收藏哦!👍

Shebang行(也称为Hashbang)是一个由井号和叹号构成的字符串行(#!),其出现在文本文件的第一行的前两个字符。**‌ Shebang用于指定命令的解释器。例如,#! /bin/sh 表示脚本将由 /bin/sh 解释器执行。这种机制允许脚本文件在不同的操作系统或不同的shell环境中以特定的解释器运行,确保了脚本的跨平台兼容性和正确执行。

Shebang行的存在是为了解决一个问题:当用户尝试运行一个脚本时,操作系统需要知道应该使用哪个程序来执行这个脚本。通过在脚本文件的第一行指定解释器的路径,Shebang行告诉操作系统使用哪个程序来执行该脚本。这样做的好处是,即使在不同的系统或环境中,只要Shebang行指定的解释器路径正确,脚本就可以被正确地执行。

一些典型的Shebang解释器指令包括:

  • #! /bin/sh:使用Bourne shell或其他兼容shell执行脚本。
  • #! /bin/csh:使用C shell执行脚本。
  • #! /usr/bin/perl -w:使用Perl执行脚本,并带有警告。
  • #! /usr/bin/python -O:使用具有代码优化的Python执行脚本。
  • #! /usr/bin/php:使用PHP的命令行解释器执行脚本。

在Linux和Unix系统中,Shebang行也被称为"解释器行"或"魔数行",因为它在脚本执行过程中扮演着至关重要的角色,确保了脚本的正确解析和执行‌

例如,

python 复制代码
#! /usr/bin/env python3
# -*- coding: utf-8 -*-
print("Hello, world!")

如果是在 Windows 上运行 python 代码的话会认为是注释行,不读取也不执行这行代码,但是在Unix或者Mac上会使用这一行找到执行文件中代码的 Python 版本。#! /usr/bin/env python3或者#!/usr/bin/env python3,有没有空格都不会报错

python脚本的运行

如果代码如下(脚本文件名为demo.py

python 复制代码
#! /usr/bin/env python3
str = "hello"
print(str)

可以使用python3 [demo.py](http://demo.py) 运行,如果使用./demo.py 运行,则需要先给予权限,chmod +x [demo.py](http://demo.py/),表示赋予执行权限。

补充:

  • +x 表示添加执行权限。
  • +r 表示添加读取权限。
  • +w 表示添加写入权限。

如果代码是

python 复制代码
str = "hello"
print(str)

如果使用./demo.py运行,则会报错

go 复制代码
./demo.py: line 1: str: command not found
./demo.py: line 2: syntax error near unexpected token `str' ./demo.py: line 2:` print(str)'

所以写代码时最好还是加上这一行 #! /usr/bin/env python3,增加可移植性。

接受每一个人的批评,可是保留你自己的判断。------莎士比亚

相关推荐
比昨天多敲两行1 小时前
Linux进程间通信-共享内存
linux·运维·服务器
AbandonForce1 小时前
Linux权限深入解读
linux·运维·服务器
哎呦,帅小伙哦1 小时前
Nanomsg usock 模块:Socket 选项与错误码介绍
linux·中间件·nanomsg
草莓熊Lotso1 小时前
【Linux网络】深入理解 HTTP 协议(一):从基础概念到 URL 编码解码
linux·网络·c++·网络协议·http·软件工程
stanleyrain1 小时前
linux上无感操作Windows上的文件夹
linux·运维·windows
拾光Ծ1 小时前
【Linux系统编程】线程池项目实战与基于策略模式的日志系统
linux·bash·线程池·策略模式·日志
feng_you_ying_li1 小时前
liunx之信号介绍(3),各种中断的介绍和系统调用的本质以及用户态与内核态的具体介绍
linux
程序员Aries2 小时前
tcp-server 项目实现流程、细节与 muduo 对比分析
linux·网络协议·tcp/ip
染翰2 小时前
Linux 配置:应用用户执行 sudo su root 免密(运维标准配置)
linux·运维·服务器
茫忙然2 小时前
Claude Code 接入 DeepSeek 或 多模型 教程(Linux)
java·linux·数据库