1. 概述

    1. 简单解释一下 shell 脚本卡头的 #!/bin/bash
    2. 水一篇, 少一篇
  2. 背景

    1. shell 脚本中的注释

      1. 通常是 以# 卡头的行
    2. 但是有时候执行 shell 的时候, 会有这种内容

      #!/bin/bash

1. #!/bin/bash

  1. 这不是注释

    1. 他是有意义的
  2. shell 脚本执行

    1. 场景

      1. 一个 脚本
      2. 由 shell 执行
  3. !/bin/bash

    1. 作用

      1. 指定 shell

2. 尝试

  1. 场景1: bash

    1. 脚本: test01.sh

      #!/bin/bash
      echo 'hello'
    2. 执行

      1. 命令

        ./test01.sh
      2. 结果

        1. 正常显示
  2. 场景2: ksh

    1. 概述

      1. ksh 是另外一种 shell
    2. 脚本: test02.sh

      #!/bin/ksh
      echo 'hello'
    3. 执行1

      1. 命令

        ./test02.sh
      2. 结果

        1. 提示找不到 ksh
    4. 执行2

      1. 命令

        > bash test02.sh
      2. 结果

        1. 执行成功
    5. 执行3

      1. 命令

        > source test02.sh
      2. 结果

        1. 执行成功

3. 结论

  1. centos 的默认 shell, 是 bash

    1. 这个不是上面操作得出的结论, 但是还是请各位记住
  2. 如果在 脚本 第一行用 #! 指定了执行 shell

    1. 则 ./ 方式执行, 会使用 指定的 shell
    2. bash 则会使用 bash 执行
      1. 在 命令行 指定的 shell 优先级更高
    3. source 则是使用 当前shell 来执行

4. 建议

  1. 脚本最好带上这个配置

    1. shell 之间的不同, 并不仅仅是 名字的差异

      1. 有一个标注, 可以更清楚的描述环境
      2. 为自己和后来人少埋一个坑

ps

  1. ref

    1. 学习 bash
  2. 其他

    1. 其实 py 脚本, 也有类似的东西

      1. !/usr/bin/python

    2. 当然这个要是有兴趣, 可以下来研究

Linux - Shell - #!/bin/bash的更多相关文章

  1. Linux:/bin/bash和/bin/sh的区别

    bash.dash(/bin/bash和/bin/sh) 原文:http://www.cnblogs.com/dkblog/archive/2011/04/02/2003822.html Linux中 ...

  2. My way on Linux - [Shell基础] - Bash Shell中判断文件、目录是否存在或者判断其是否具有某类属性(权限)的常用方法

    Conditional Logic on Files # 判断文件是否存在及文件类型 -a file exists. #文件存在 -b file exists and is a block speci ...

  3. Linux Shell基础 Bash常见命令 history、alias命令以及常用快捷键

    概述  shell中常见命令history 历史纪录命令:history 命令格式如下: [root@localhost ~]# history [选项] [历史命令保存文件] -c:清空历史命令: ...

  4. linux shell编程-bash的奇技淫巧

    本文主要讲bash脚本中容易出错和很少用但是用起来有意想不到效果的部分. 循环: 正常的for循环: for i in a b c 1 2 3; do echo "$i" done ...

  5. Linux Shell基础 Bash常见命令 echo命令

    概述 shell中常见的命令echo. 输出命令:echo echo命令的输出内容如果没有特殊含义,则将原内容输出到屏幕:如果输出内容有特殊含义,则输出打印其含义. 命令格式如下: [root@loc ...

  6. Ubuntu学习总结-08 Ubuntu运行Shell脚本报 shell /bin/bash^M: bad interpreter错误问题解决

    错误原因之一很有可能是运行的脚本文件是DOS格式的, 即每一行的行尾以\r\n来标识, 其ASCII码分别是0x0D, 0x0A.可以有很多种办法看这个文件是DOS格式的还是UNIX格式的, 还是MA ...

  7. shell /bin/bash^M: bad interpreter错误解决

      错误原因之一很有可能是你的脚本文件是DOS格式的, 即每一行的行尾以\r\n来标识, 其ASCII码分别是0x0D, 0x0A.可以有很多种办法看这个文件是DOS格式的还是UNIX格式的, 还是M ...

  8. linux shell脚本之-变量极速入门与进阶(1)

    1,如果创建shell脚本? 使用任意文本编辑软件,一般为vim,创建.sh结尾的文件,在文件的最开头用 #!/bin/bash 注明shell的类型 如: ghostwu@dev:~/linux/s ...

  9. ./ . 和#!/bin/bash 辨析Linux如何选择当前执行脚本的shell

    最近遇到一个有趣的问题,让我搞清楚Linux如何选择当前执行脚本的shell 执行cts的的 media stress test 需要安装 android-cts-media-1.0.zip 把这个文 ...

随机推荐

  1. layui radio手动选择失效的问题

    var radio_types = document.getElementsByName("radio_type"); for (var i = 0; i < radio_t ...

  2. [POI2005] SKA-Piggy Banks - DFS

    有N个小猪存钱罐.每一个存钱罐能够用相应的钥匙打开或者被砸开.Byteazar已经将钥匙放入到一些存钱罐中.现在已知每个钥匙所在的存钱罐,Byteazar想要买一辆小汽车,而且需要打开所有的存钱罐.然 ...

  3. json转dataset的另外一种解析方式自动生成guid强关联

    /// <summary> /// 将json字符串自动转成dataset,并且自动补全主子关联关系, /// Guid,FKGuid /// Author:lijia /// date: ...

  4. 用 ArcMap 发布 ArcGIS Server Feature Server Feature Access 服务 SQL Server版

    1. 安装Desktop, 2. 安装ArcGIS Server 3. 安装SQLServer2017 4. ArcMap 中 Catalog 中注册ArcGIS Server 5. System T ...

  5. nat123+nginx实现外网访问本机IIS发布的系统

    故事开端(前因) 嗯,内网其实是校园网络,服务器呢,不是阿里云.腾讯云之类的云服务器,而是自己正在码字的笔记本电脑:有公网IP吗?没有!校园IP分配的IP固定不?不固定,动态分配的,额~~~. 我想想 ...

  6. 【巨杉数据库SequoiaDB】巨杉数据库荣获《金融电子化》“金融科技创新奖”

    巨杉助力金融科技创新 2019年12月19日,由<金融电子化>杂志社主办.北京金融科技产业联盟协办的“2019中国金融科技年会暨第十届金融科技及服务优秀创新奖颁奖典礼”在京成功召开.来自金 ...

  7. easyui-numberbox后台获取数据后,鼠标一点击就自动清空了

    <input type="text" name="txtMeterInitData" id="txtMeterInitData" cl ...

  8. windows下安装配置subline+Markdown

    安装环境:win10 64bit 1. 安装subline3 subline : http://www.sublimetextcn.com/  直接下载安装,不用激活(dao版,慎用) 2. 安装Ma ...

  9. Wannafly Camp 2020 Day 2F 采蘑菇的克拉莉丝 - 树链剖分

    如果暴力维护,每次询问时需要对所有孩子做计算 考虑通过树剖来平衡修改与询问的时间,询问时计算重链和父树,轻链的贡献预先维护好,修改时则需要修改可能影响的轻链贡献,因为某个点到根的路径上轻重交替只有 \ ...

  10. Java判断一个字符串是否有中文

    Java判断一个字符串是否有中文一般情况是利用Unicode编码(CJK统一汉字的编码区间:0x4e00–0x9fbb)的正则来做判断,但是其实这个区间来判断中文不是非常精确,因为有些中文的标点符号比 ...