当前位置: 首页 > news >正文

linux shell 入门学习笔记3 shebang

shebang

计算机程序中,shebang指的是出现在文本文件的第一行前两个字符#!
在Unix系统中,程序会分析shebang后面的内容,作为解释器的指令,例如

  • 以#!/bin/sh 开头的文件,程序在执行的时候会调用/bin/sh,也就是bash解释器
  • 以#!/usr/bin/python 开头的文件,代表指定python解释器去执行
  • 以#!/usr/bin/env 解释器名称,是一种在不同平台上都能正确找到解释器的办法

注意事项

  • 如果脚本未指定shebang,脚本执行的时候,默认用当前shell去解释脚本,即$SHELL
  • 如果shebang指定了可执行的解释器,如/bin/bash /usr/bin/python,脚本在执行时,文件名会作为参数传递给解释器
  • 如果#!指定的解释程序没有可执行权限,则会报错"bad interpreter:Permission denied"
  • 如果#!指定的解释程序不是一个可执行文件,那么指定的解释程序会被忽略,转而交给当前的SHELL去执行这个脚本
  • 如果#!指定的解释程序不存在,那么会报错"bad interpreter:No such file or directionary"
  • #!之后的解释程序,需要写其绝对路径(如:#!/bin/bash),他是不会自动到"$PATH"中寻找解释器的
  • 如果你使用的是"bash test.sh"这样的命令来执行脚本,那么#!这一行将会被忽略掉,解释器当然是用命令行中显示指定的bash。

脚本案例

[root@chaogelinux data]# cat test.sh
#!/bin/bash
echo "超哥强啊,奥力给"

执行结果
执行结果
去掉shebang 运行结果
去掉shebang 运行结果
test.py添加shebang后运行结果
添加shebang后运行结果
解释test.sh没有shebang运行正确的问题,当前环境变量中已经声明了shell的解释器了。
没有shebang运行正确

http://www.lryc.cn/news/12706.html

相关文章:

  • 写作小课堂:简历模版【A4纸正反两面】(20230219)
  • 一文搞懂 DevOps
  • 深入讲解Kubernetes架构-租约
  • 微信小程序学习第11天——Vant Weapp组件库、API Promise化、全局数据共享Mobx、分包
  • Python3-基本数据类型
  • RPA落地指南:什么是RPA
  • 跨域问题的三种解决办法
  • c++提高篇——string容器
  • [软件工程导论(第六版)]第6章 详细设计(复习笔记)
  • RabbitMQ核心内容:实战教程(java)
  • RK356x U-Boot研究所(命令篇)3.7 pci与nvme命令的用法
  • 微信头像昵称获取能力的变化导致了我半年没更新小程序
  • 【深度学习编译器系列】1. 为什么需要深度学习编译器?
  • 数据结构与算法总结整理(超级全的哦!)
  • DPDK — MALLOC 堆内存管理组件
  • 分享113个HTML艺术时尚模板,总有一款适合您
  • 2023年美赛C题Wordle预测问题一建模及Python代码详细讲解
  • 小米12s ultra,索尼xperia1 iv,数码相机 拍照对比
  • C++笔记 模板的进阶知识
  • 基于 Debain11 构建 asp.net core 6.x 的基础运行时镜像
  • 【无人机路径规划】基于IRM和RRTstar进行无人机路径规划(Matlab代码实现)
  • Spring Boot中使用@Autowire装配接口是怎么回事?
  • 23种设计模式介绍(Python示例讲解)
  • 初识Hadoop,走进大数据世界
  • 加油站会员管理小程序实战开发教程14 会员充值
  • leetcode 1792. 最大平均通过率
  • 15-基础加强-2-xml(约束)枚举注解
  • 13:高级篇 - CTK 事件管理机制(signal/slot)
  • 群晖-第1章-IPV6的DDNS
  • centos7系统-kubeadm安装k8s集群(v1.26版本)亲测有效,解决各种坑可供参考