Linux - Shell - #!/bin/bash

  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. 当然这个要是有兴趣, 可以下来研究
posted @ 2019-12-14 22:22  轩辕拾銉  阅读(498)  评论(0编辑  收藏  举报