She-bang(#!):用来在Linux/unix系统指定解释程序的,又叫Sha-bang,Hashbang等。是#!这个符号的名称。

Shebang这个符号通常在Linux/Unix系统的脚本中第一行开头中写到,它指明了执行这个脚本文件的解释程序。

使用中注意一下细节:

  • 如果脚本文件中没有#!这一行,那么它执行时会默认用当前Shell去解释这个脚本(即:$SHELL环境变量)。

  • 如果#!之后的解释程序是一个可执行文件,那么执行这个脚本时,它就会把文件名及其参数一起作为参数传给那个解释程序去执行。

  • 如果#!指定的解释程序没有可执行权限,则会报错“bad interpreter: Permission denied”。

  • 如果#!指定的解释程序不是一个可执行文件,那么指定的解释程序会被忽略,转而交给当前的SHELL去执行这个脚本。

  • 如果#!指定的解释程序不存在,那么会报错“bad interpreter: No such file or directory”。

    注意:#!之后的解释程序,需要写其绝对路径(如:#!/bin/bash),它是不会自动到$PATH中寻找解释器的。这里支持嵌入环境变量,例如#!/usr/bin/env myenv(从/usr/bin下的env文件,也就是PATH环境变量查找myenv这个解释器)。

  • 当然,如果你使用”bash test.sh”这样的命令来执行脚本,那么#!这一行将会被忽略掉,解释器当然是用命令行中显式指定的bash。

例如:文件test.sh的内容如下:

#!/bin/bash
echo "hello, world."
echo "hello, ${1}."
# 以下命令是配置权限:
chmod a+x  test.sh
# 下面是运行:
./test.sh   Jay  (运行之时,其实是 /bin/bash ./test.sh Jay)
# 结果为:
hello, world.
hello, Jay.

Linux系统she-bang介绍相关推荐

  1. Linux系统Logrotate服务介绍

    Linux系统Logrotate服务介绍 本文转自 民工哥 51CTO博客,原文链接:http://blog.51cto.com/mingongge/1957688

  2. linux软件包管理 pdf,中标麒麟Linux系统软件包管理介绍(22页)-原创力文档

    中标麒麟Linux服务器操作系统培训系列 中标麒麟Linux系统软件包管理介绍 技术创新,变革未来 本章目标 •了解中标麒麟Linux服务器操作系统中应用程序的 组成: •了解中标麒麟Linux服务器 ...

  3. Linux系统用户详细介绍

    Linux系统用户详细介绍 linux 用户(user)管理 . linux有哪些用户?作用 用户组(grop) 用户相关配置 linux 用户(user)管理 人 名字 身份证 linux 名字 0 ...

  4. Linux 系统相关目录介绍

    Linux 总目录篇 Linux 系统相关目录介绍 /bin 用来贮存用户命令./usr/bin 也被用来贮存用户命令. /sbin 许多系统命令(例如 shutdown)的贮存位置./usr/sbi ...

  5. Linux学习笔记之——Linux系统内部相关介绍

    Linux学习笔记之--Linux系统内部相关介绍 摘要:主要记录一些比较有用的能够帮助理解和使用Linux的知识.比如一些相关概念.没兴趣的看看就好.知道有这么个东西.注意事项.和一些常用目录的作用 ...

  6. Linux系统的基本介绍

    Linux系统的介绍 Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix ...

  7. 3 什么是linux磁盘分区,3. Linux系统磁盘分区介绍

    1. 磁盘分区基本知识 1)磁盘在使用前一般要先分区(相当于建房子要分房间一样). 2)磁盘分区一般有主分区.扩展分区和逻辑分区之分.一块磁盘最多可以有4个主分区,其中一个主分区的位置可以用一个扩展分 ...

  8. 2021-04-04:linux第1天:linux系统的基础介绍及学习

    1.Linux学习方向 linux运维工程师:是维护linux环境服务器的 linux嵌入式工程师:下面做驱动开发和linux嵌入式系统下面做开发 linux下面做开发项目:一般是写java程序,放在 ...

  9. 如何使用 rsync 备份 Linux 系统的一些介绍

    2019独角兽企业重金招聘Python工程师标准>>> 备份一直是 Linux 世界的热门话题.回到 2017,David Both 为 Opensource.com 的读者在使用 ...

  10. linux 系统配置文件分类介绍

    内核本身也可以看成是一个"程序".为什么内核需要配置文件?内核需要了解系统中用户和组的列表,进而管理文件权限(即根据权限判定特定用户 (UNIX_USERS)是否可以打开某个文件) ...

最新文章

  1. 2012 ARM嵌入式开发应用研讨会杂谈
  2. 将打包好的VUE文件部署到Web容器(Nginx)中,解决接口调用跨域问题
  3. 科大星云诗社动态20201215
  4. Java学习小程序(8)求数组元素的最大值并放在最后一位
  5. Intent介绍及Intent在Activity中的使用方法
  6. 改变网页标签图片(favicon)
  7. OpenCV参考手册之Mat类详解
  8. C#LeetCode刷题之#62-不同路径(Unique Paths)
  9. 登录之回车登录和记住密码
  10. jQuery hover事件鼠标滑过图片半透明标题文字滑动显示隐藏
  11. iOS 仿淘宝实现商品规格图片的放大缩小功能
  12. sftp连不上服务器 vscode_vscode+sftp 开发模式环境的同步
  13. 递归应用之谢尔宾斯基三角形Python
  14. ideal如何快速导入import_IntelliJ IDEA 自动导入包 快捷方式
  15. vue动态修改网页标题(也可用于vx里的网页标题)
  16. 推荐系统与LSTM、GRU
  17. 我们不改需求了,给你们立字据!
  18. 张栋_机器学习的照片 - 微相册
  19. 软件质量(ISO/IEC 9126)的定义与特性
  20. React Native-9.React Native Touchable组件详解

热门文章

  1. saltstack中grains详解
  2. Move 和 SimpleMove
  3. java ora 010_mybatis 的坑——java.sql.SQLException:ORA-01008: 并非所有的变量都已绑定
  4. typroa主题分享
  5. java中换行符_Java 中的空格符、换行符等怎么表示
  6. 没法访问谷歌 wifi_如何设置Google WiFi系统
  7. linux命令查询cpu,Linux查看CPU信息方法(超简单)
  8. java定义boolean命名_阿里规范:为何boolean类型变量命名禁用is开头
  9. Android 扇形统计图的设计与编写
  10. C# winform动态画扇形统计图