[linux-脚本]shebang(shabang #!)
使用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 #!)相关推荐
- linux 脚本判断一个目录不存在
linux 脚本判断一个目录不存在 1 2 3 4 #!/bin/sh if [ ! -d /mnt/u ]; then mkdir -p /mnt/u fi 本文转自 boy461205160 51 ...
- 将Linux脚本中的正常输出,警告,错误等信息输出到文件中
将Linux脚本中的正常输出,警告,错误等信息输出到文件中 转载于:https://www.cnblogs.com/lwmp/p/7700339.html
- 病毒研究之感染linux脚本
病毒研究之感染linux脚本 对于shell编程的程序员来说所谓的shell病毒技术就是小牛一毛而已,看完本文后你就会有所体会但,简单归简单,我们还是要去了解它,呵呵. 主要的shell病毒 ...
- Linux脚本实战之猜数字
Linux脚本实战之猜数字 一.脚本要求 二.脚本示例一 三.脚本示例二 一.脚本要求 1.系统环境为RHEL8.0 2.脚本生成一个100以内的随机数,提示用户猜数字. 3.根据用户的输入,提示猜对 ...
- Linux脚本实战之检测网卡流量
Linux脚本实战之检测网卡流量 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 1.检测网卡流量,并按规定格式记录在日志中,输出到/data/net.log/目录中以执行脚本时间命令的文件中 ...
- Linux脚本之定时清空文件内容
Linux脚本之定时清空文件内容 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 1.要求创建名为rm_file.sh的脚本 2.要求在/home/tmp/下各以人名命名的临时目录,每天0点定 ...
- linux脚本编程(shell)浅介
linux脚本编程(shell)浅介 2006-01-10 11:45 27693人阅读 评论(18) 收藏 举报 脚本shelllinux编程bash语言 linux脚本(shell)编程 啊,昨天 ...
- 马哥linux脚本,linux学习 – shell脚本
shell是命令和硬件之间的桥梁 shell的工作方式分为两种:交互式.批处置 交互式:用户一次输入一条命令,shell翻译并执行一条 批处理:用户将多条命令构成一个shell脚本,执行脚本时,she ...
- 【Linux入门基础知识】Linux 脚本编写基础
1. Linux 脚本编写基础 1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须放在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在 ...
- linux脚本编程(shell)浅介 (转载)
linux脚本(shell)编程 啊,昨天上网看到一篇讲 linux/unix shell 的文章,想想自己最后写这东西也是一年前的事了,想想都快忘光了. 还是整理一下,做一次回顾,以后说不定还用得上 ...
最新文章
- 【612页】Android 大厂面试题及解析大全(中高级)
- 特性开关框架 java_关于Mosfet你应当知道的开关特性
- 关于分组序号在MySQL中的实现
- GridView合并列下的行单元格的方法
- .NET应用迁移到.NET Core--调查案例
- Java基础中按值传递和引用传递详解
- Linux增加开放端口号
- Python中BufferedIOBase
- mysql大批量数据写入_存储过程写入大批量数据,用于测试mysql查询优化
- 2018-12-26 课堂笔记 for循环
- (转)从Fintech到Techfin,未来十年有九大重要挑战
- 转载 《Python爬虫学习系列教程》学习笔记
- Eclipse 编译C++
- PYTHON 获取淘宝服务器时间 显示在tkinter的UI
- 【ESP32】HardwareSerial库使用
- 制作PPT和画报的免费素材:pixabay免费照片插图矢量图
- 常见软件非功能性需求描述案例
- Android uses-sdk tools:overrideLibrary
- C# 匿名方法和拉姆达表达式
- 哪种蓝牙耳机比较好?2022TWS耳机推荐
热门文章
- 50个常用的笔试、面试sql语句
- 人生苦短,喝点python性能鸡汤
- 晨哥真有料丨聊天就在一起了,真有这么简单吗?
- 计算机网络实验二抓包协议分析,计算机网络实验-使用Wireshark分析TCP和UDP协议...
- android 录音命令,音频延迟 | Android NDK | Android Developers
- opencv 亮度增强 二
- h264 aac mux flv
- 我的docker随笔13:docker源码编译进阶篇
- 我的内核学习笔记7:Intel LPC驱动lpc_ich分析
- 【kafka】Flink 消费 kafka Received unknown topic topic/partition may not exist Describe access to it