Linux - Shell - #!/bin/bash

Posted 轩辕拾銉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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. 当然这个要是有兴趣, 可以下来研究

以上是关于Linux - Shell - #!/bin/bash的主要内容,如果未能解决你的问题,请参考以下文章

NC / Netcat - 反弹Shell

Shell基础知识和编程规范

shell脚本运行的原理(source命令等)

Shell + crontab 实现日志压缩归档

6.11

linux查杀病毒的几个思路