概述

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有什么作用相关推荐

  1. Linux脚本开头#!/bin/bash和#!/bin/sh是什么意思以及区别

    Linux脚本开头#!/bin/bash和#!/bin/sh是什么意思以及区别 一.意思 #!/bin/sh是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面根的是此解释此脚本的she ...

  2. 关于linux shell脚本开头的#!/bin/sh

    打开终端,进入/bin/ ls 一下 会见到 bash  sh 呢两个文件. 其实距地系两个唔同既shell 解析器. 如果在脚本a.sh   开头写入 #!/bin/sh 那么执行./a.sh 时候 ...

  3. Linux 脚本文件中开头的#!/bin/bash和#!/bin/sh是什么意思

    解释 #!/bin/sh:表示此脚本使用 /bin/sh 来解释执行,#! 是特殊的表示符,其后面跟的是解释此脚本的 shell 的路径. 我们知道 shell 有很多种,例如,bash.csh.sh ...

  4. [shell]Linux脚本开头#!/bin/bash和#!/bin/sh是什么意思以及区别

    一直以为在shell脚本中#都是代表着注释功能,同样在脚本开始的#!/bin/sh也只是告诉用户这是一个shell脚本,而最近顺手查了下,才发现不是这个意思,分享下面的文章. 转自:http://ww ...

  5. 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 ...

  6. shell脚本里的#!/bin/bash是什么意思

    #!/bin/bash echo "Hello World" 第 1 行的#!是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 shell:后面的/bin/b ...

  7. Shell脚本中:#!/bin/bash和#!/bin/sh

    转自:https://www.cnblogs.com/jonnyan/p/8798364.html 本文参考:https://www.cnblogs.com/aaronLinux/p/6885288. ...

  8. linux脚本获取当前用户,bash shell 获取当前正在执行脚本的绝对路径

    一般我们写Shell脚本的时候,都倾向使用绝对路径,这样无论脚本在什么目录执行,都应该起到相同的效果,但是有些时候,我们设计一个软件包中的工具脚本,可能使用相对路径更加灵活一点,因为你不知道用户会在哪 ...

  9. Shell脚本中:#!/bin/bash和#!/bin/sh是什么意思以及区别?

    意思:#!/bin/sh是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面跟的是解释此脚本的shell的路径. 其实第一句的#!是对脚本的解释器程序路径,脚本的内容是由解释器解释的,我 ...

  10. 解决Linux报错:/bin/bash^M: 坏的解释器: 没有那个文件或目录

    这个问题一般是windows编辑shell文件后,拷贝到Linux发生的错误. 原因是在Windows下每一行结尾是\n\r,而Linux下则是\n,所以才会有 多出来的\r 解决方案 执行命令修复, ...

最新文章

  1. mysql 取出20条数据_“取出数据表中第10条到第20条记录”的sql语句+select top 使用方法...
  2. phpcms后台系统怎么去掉html目录_电子笔记本 | 好记性胜过烂笔头?基于python3的知识管理系统...
  3. mac os 安装 pkg-config
  4. Linux进程缓冲区大小,Linux IOCTL动态命令、动态|自定义缓冲区大小、IOCTL使用大缓冲区的问题...
  5. Android简单实现BroadCastReceiver广播机制
  6. Maven依赖Scope标签用法
  7. 单片机特殊功能寄存器
  8. PHP 每天的总结(1)
  9. Java 设计模式 之 代理模式(Proxy)
  10. 计算机总提示优盘格式化,金士顿u盘一插进电脑就提示格式化怎么办?不想格式化又怎么办?...
  11. win7从光盘进入修复计算机,深度完美正式版win7系统修复工具自修复崩溃系统
  12. c语言字符画小狗,C语言字符画,字符闪画
  13. 携手独角兽企业,微软正在用AI打造更美好的未来
  14. Ubuntu20.04 系统安装USB无线网卡 TL-WDN5200免驱版 安转失败不显示WiFi的一种解决方案
  15. android涂鸦实现
  16. Linux守护进程HALD
  17. 谈谈:高端网站定制开发的流程和步骤有哪些?
  18. 数学不好 学软件测试能学会吗,英语差、数学烂,我还能学好编程吗?
  19. NC Portal单据增加自定义按钮
  20. 破甲两千六 Spring Cloud 教程(三):添加Spring Cloud 的 Netflix Eureka 插件,实现服务端、客户端的发现与注册

热门文章

  1. java压缩图片工具类Thumbnailator
  2. 分享一款在线考试学习系统.net源码
  3. 安装ANSYS19.0的正确方法(附下载)
  4. (原创)十大危险cmd命令代码总结
  5. 分布式相关面试题总结
  6. lwip协议栈实现服务器端主动发送,API函数及编程实例《LwIP协议栈源码详解—TCP/IP协议的实现》...
  7. VSS2005源代码管理
  8. 私塾 java_JAVA私塾
  9. oracle中怎么sqlprompt,自定义sqlplus登录过后的sqlprompt
  10. Windows自带md5校验工具使用说明