linux脚本开头的#!/bin/bash有什么作用
概述
linux脚本的开头都有一行注释,例如: #!/bin/bash或者#!/bin/sh,这行注释的作用就是声明解析当前文件要使用的解释器。通常我们写的脚本都是包含各种系统命令,来实现定制功能的,所以都是使用bash和sh解释器的。
解释器
其实就是一个可执行程序。例如可以在脚本中使用#!/usr/bin/python来声明,这样运行脚本时就会使用python来解析。
添加脚本前面的声明行就就类似于执行了下面的命令
<解释器> <脚本文件>例如:
#!/bin/bash 就等于 bash <脚本文件>
实例:
1. 不声明解释器的方式
新建一个test01的文件,写入如下内容:
echo hello
使用sh或bash来运行此文件
2. 声明解释器的方式
修改test01的内容如下
#!/bin/bash
echo hello
添加可执行权限后,运行此文件,输出如下:
3. 使用其他的解释器
现在我们修改解释器,改为#!/bin/cat
#!/bin/catecho hello
再次运行test01文件,结果如下,和我们直接使用cat ./test01是一样的效果。
linux脚本开头的#!/bin/bash有什么作用相关推荐
- Linux脚本开头#!/bin/bash和#!/bin/sh是什么意思以及区别
Linux脚本开头#!/bin/bash和#!/bin/sh是什么意思以及区别 一.意思 #!/bin/sh是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面根的是此解释此脚本的she ...
- 关于linux shell脚本开头的#!/bin/sh
打开终端,进入/bin/ ls 一下 会见到 bash sh 呢两个文件. 其实距地系两个唔同既shell 解析器. 如果在脚本a.sh 开头写入 #!/bin/sh 那么执行./a.sh 时候 ...
- Linux 脚本文件中开头的#!/bin/bash和#!/bin/sh是什么意思
解释 #!/bin/sh:表示此脚本使用 /bin/sh 来解释执行,#! 是特殊的表示符,其后面跟的是解释此脚本的 shell 的路径. 我们知道 shell 有很多种,例如,bash.csh.sh ...
- [shell]Linux脚本开头#!/bin/bash和#!/bin/sh是什么意思以及区别
一直以为在shell脚本中#都是代表着注释功能,同样在脚本开始的#!/bin/sh也只是告诉用户这是一个shell脚本,而最近顺手查了下,才发现不是这个意思,分享下面的文章. 转自:http://ww ...
- Linux中执行bash脚本报错/bin/bash^M: bad interpreter: No such file or directory
问题描述:Linux中采用绝对路径执行Bash脚本,报错-bash: /home/xxx.sh: /bin/bash^M: bad interpreter: No such file or direc ...
- shell脚本里的#!/bin/bash是什么意思
#!/bin/bash echo "Hello World" 第 1 行的#!是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 shell:后面的/bin/b ...
- Shell脚本中:#!/bin/bash和#!/bin/sh
转自:https://www.cnblogs.com/jonnyan/p/8798364.html 本文参考:https://www.cnblogs.com/aaronLinux/p/6885288. ...
- linux脚本获取当前用户,bash shell 获取当前正在执行脚本的绝对路径
一般我们写Shell脚本的时候,都倾向使用绝对路径,这样无论脚本在什么目录执行,都应该起到相同的效果,但是有些时候,我们设计一个软件包中的工具脚本,可能使用相对路径更加灵活一点,因为你不知道用户会在哪 ...
- Shell脚本中:#!/bin/bash和#!/bin/sh是什么意思以及区别?
意思:#!/bin/sh是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面跟的是解释此脚本的shell的路径. 其实第一句的#!是对脚本的解释器程序路径,脚本的内容是由解释器解释的,我 ...
- 解决Linux报错:/bin/bash^M: 坏的解释器: 没有那个文件或目录
这个问题一般是windows编辑shell文件后,拷贝到Linux发生的错误. 原因是在Windows下每一行结尾是\n\r,而Linux下则是\n,所以才会有 多出来的\r 解决方案 执行命令修复, ...
最新文章
- mysql 取出20条数据_“取出数据表中第10条到第20条记录”的sql语句+select top 使用方法...
- phpcms后台系统怎么去掉html目录_电子笔记本 | 好记性胜过烂笔头?基于python3的知识管理系统...
- mac os 安装 pkg-config
- Linux进程缓冲区大小,Linux IOCTL动态命令、动态|自定义缓冲区大小、IOCTL使用大缓冲区的问题...
- Android简单实现BroadCastReceiver广播机制
- Maven依赖Scope标签用法
- 单片机特殊功能寄存器
- PHP 每天的总结(1)
- Java 设计模式 之 代理模式(Proxy)
- 计算机总提示优盘格式化,金士顿u盘一插进电脑就提示格式化怎么办?不想格式化又怎么办?...
- win7从光盘进入修复计算机,深度完美正式版win7系统修复工具自修复崩溃系统
- c语言字符画小狗,C语言字符画,字符闪画
- 携手独角兽企业,微软正在用AI打造更美好的未来
- Ubuntu20.04 系统安装USB无线网卡 TL-WDN5200免驱版 安转失败不显示WiFi的一种解决方案
- android涂鸦实现
- Linux守护进程HALD
- 谈谈:高端网站定制开发的流程和步骤有哪些?
- 数学不好 学软件测试能学会吗,英语差、数学烂,我还能学好编程吗?
- NC Portal单据增加自定义按钮
- 破甲两千六 Spring Cloud 教程(三):添加Spring Cloud 的 Netflix Eureka 插件,实现服务端、客户端的发现与注册
热门文章
- java压缩图片工具类Thumbnailator
- 分享一款在线考试学习系统.net源码
- 安装ANSYS19.0的正确方法(附下载)
- (原创)十大危险cmd命令代码总结
- 分布式相关面试题总结
- lwip协议栈实现服务器端主动发送,API函数及编程实例《LwIP协议栈源码详解—TCP/IP协议的实现》...
- VSS2005源代码管理
- 私塾 java_JAVA私塾
- oracle中怎么sqlprompt,自定义sqlplus登录过后的sqlprompt
- Windows自带md5校验工具使用说明