使用Linux或者unix系统的人们对#!这个符号都不陌生,但要说出个具体的所以然来,很多人估计还真不行,我们有必要就此整理一下。Shebang这个符号通常在Unix系统的脚本中第一行开头中写到,它指明了执行这个脚本文件的解释程序。具体地:

  • 1. 如果脚本文件中没有#!这一行,那么它执行时会默认用当前Shell去解释这个脚本(即:$SHELL环境变量)。
  • 2. 如果#!之后的解释程序是一个可执行文件,那么执行这个脚本时,它就会把文件名及其参数一起作为参数传给那个解释程序去执行。
  • 3. 如果#!指定的解释程序没有可执行权限,则会报错“bad interpreter: Permission denied”。如果#!指定的解释程序不是一个可执行文件,那么指定的解释程序会被忽略,转而交给当前的SHELL去执行这个脚本。
  • 4. 如果#!指定的解释程序不存在,那么会报错“bad interpreter: No such file or directory”。  注意:#!之后的解释程序,需要写其绝对路径(如:#!/bin/bash),它是不会自动到$PATH中寻找解释器的。
  • 5. 当然,如果你使用”bash test.sh”这样的命令来执行脚本,那么#!这一行将会被忽略掉,解释器当然是用命令行中显式指定的bash。

我们可以自己写一个解释器来验证一下这些点。

转载于:https://www.cnblogs.com/victor-ma/p/8191603.html

[linux-脚本]shebang(shabang #!)相关推荐

  1. linux 脚本判断一个目录不存在

    linux 脚本判断一个目录不存在 1 2 3 4 #!/bin/sh if [ ! -d /mnt/u ]; then mkdir -p /mnt/u fi 本文转自 boy461205160 51 ...

  2. 将Linux脚本中的正常输出,警告,错误等信息输出到文件中

    将Linux脚本中的正常输出,警告,错误等信息输出到文件中 转载于:https://www.cnblogs.com/lwmp/p/7700339.html

  3. 病毒研究之感染linux脚本

    病毒研究之感染linux脚本     对于shell编程的程序员来说所谓的shell病毒技术就是小牛一毛而已,看完本文后你就会有所体会但,简单归简单,我们还是要去了解它,呵呵.  主要的shell病毒 ...

  4. Linux脚本实战之猜数字

    Linux脚本实战之猜数字 一.脚本要求 二.脚本示例一 三.脚本示例二 一.脚本要求 1.系统环境为RHEL8.0 2.脚本生成一个100以内的随机数,提示用户猜数字. 3.根据用户的输入,提示猜对 ...

  5. Linux脚本实战之检测网卡流量

    Linux脚本实战之检测网卡流量 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 1.检测网卡流量,并按规定格式记录在日志中,输出到/data/net.log/目录中以执行脚本时间命令的文件中 ...

  6. Linux脚本之定时清空文件内容

    Linux脚本之定时清空文件内容 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 1.要求创建名为rm_file.sh的脚本 2.要求在/home/tmp/下各以人名命名的临时目录,每天0点定 ...

  7. linux脚本编程(shell)浅介

    linux脚本编程(shell)浅介 2006-01-10 11:45 27693人阅读 评论(18) 收藏 举报 脚本shelllinux编程bash语言 linux脚本(shell)编程 啊,昨天 ...

  8. 马哥linux脚本,linux学习 – shell脚本

    shell是命令和硬件之间的桥梁 shell的工作方式分为两种:交互式.批处置 交互式:用户一次输入一条命令,shell翻译并执行一条 批处理:用户将多条命令构成一个shell脚本,执行脚本时,she ...

  9. 【Linux入门基础知识】Linux 脚本编写基础

    1. Linux 脚本编写基础 1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须放在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在 ...

  10. linux脚本编程(shell)浅介 (转载)

    linux脚本(shell)编程 啊,昨天上网看到一篇讲 linux/unix shell 的文章,想想自己最后写这东西也是一年前的事了,想想都快忘光了. 还是整理一下,做一次回顾,以后说不定还用得上 ...

最新文章

  1. 【612页】Android 大厂面试题及解析大全(中高级)
  2. 特性开关框架 java_关于Mosfet你应当知道的开关特性
  3. 关于分组序号在MySQL中的实现
  4. GridView合并列下的行单元格的方法
  5. .NET应用迁移到.NET Core--调查案例
  6. Java基础中按值传递和引用传递详解
  7. Linux增加开放端口号
  8. Python中BufferedIOBase
  9. mysql大批量数据写入_存储过程写入大批量数据,用于测试mysql查询优化
  10. 2018-12-26 课堂笔记 for循环
  11. (转)从Fintech到Techfin,未来十年有九大重要挑战
  12. 转载 《Python爬虫学习系列教程》学习笔记
  13. Eclipse 编译C++
  14. PYTHON 获取淘宝服务器时间 显示在tkinter的UI
  15. 【ESP32】HardwareSerial库使用
  16. 制作PPT和画报的免费素材:pixabay免费照片插图矢量图
  17. 常见软件非功能性需求描述案例
  18. Android uses-sdk tools:overrideLibrary
  19. C# 匿名方法和拉姆达表达式
  20. 哪种蓝牙耳机比较好?2022TWS耳机推荐

热门文章

  1. 50个常用的笔试、面试sql语句
  2. 人生苦短,喝点python性能鸡汤
  3. 晨哥真有料丨聊天就在一起了,真有这么简单吗?
  4. 计算机网络实验二抓包协议分析,计算机网络实验-使用Wireshark分析TCP和UDP协议...
  5. android 录音命令,音频延迟  |  Android NDK  |  Android Developers
  6. opencv 亮度增强 二
  7. h264 aac mux flv
  8. 我的docker随笔13:docker源码编译进阶篇
  9. 我的内核学习笔记7:Intel LPC驱动lpc_ich分析
  10. 【kafka】Flink 消费 kafka Received unknown topic topic/partition may not exist Describe access to it