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. 当然这个要是有兴趣, 可以下来研究

最新文章

  1. Git快速入门
  2. CSS3动画制作
  3. [转]看懂UML类图
  4. .Net程序员飞扬有用的85个工具
  5. [SQL]复制数据库某一个表到另一个数据库中
  6. [C++] C\C++ printf 输出格式
  7. $self $index $first $last parent() outerParent()
  8. 并行计算之Memory barrier(内存
  9. C#压缩文件为zip格式
  10. uva 10304 - Optimal Binary Search Tree 区间dp
  11. setFocus一定要写在setLayout设置的后面,否则不起作用——使用setFocusPolicy为控件设置不同的焦点策略:Tab焦点,Click焦点,Wheel焦点和没有焦点
  12. Bootstrap 模态对话框只加载一次 remote 数据的解决办法 转载
  13. listview 去掉header和footer中的分割线
  14. Bootstrap基础学习(一)—表格与按钮
  15. python安装第三方库
  16. IT题库5-并发和并行
  17. 剑指offer 7. 递归和循环 斐波那契数列
  18. python正则表达式(三)
  19. 轮播图js编写
  20. docker容器和镜像

热门文章

  1. win10中Pycharm连接mysql时区错误的解决
  2. 解决NahimicSvc32.exe与bilibili直播姬的音频不兼容的问题
  3. MS SQLServer相关自动化程序的问题汇总 (SQLServer每天定时输出EXCEL或xml的格式的问题等 )
  4. LeetCode 160. 相交链表 (找出两个链表的公共结点)
  5. axios 跨域请求允许带cookie,则服务器Access-Control-Allow-Origin应设置为具体域名,否则请求无法获得返回数据
  6. Extreme Learning Machine
  7. LaTeX技巧011:LaTtex中如何产生直立体希腊字母?
  8. BK: Data mining
  9. 在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。”
  10. Selenium3+python自动化009- 截图