Linux - Shell - #!/bin/bash
-
概述
- 简单解释一下 shell 脚本卡头的 #!/bin/bash
- 水一篇, 少一篇
-
背景
-
shell 脚本中的注释
- 通常是 以# 卡头的行
-
但是有时候执行 shell 的时候, 会有这种内容
#!/bin/bash
-
1. #!/bin/bash
-
这不是注释
- 他是有意义的
-
shell 脚本执行
- 场景
- 一个 脚本
- 由 shell 执行
- 场景
-
#!/bin/bash
- 作用
- 指定 shell
- 作用
2. 尝试
-
场景1: bash
-
脚本: test01.sh
#!/bin/bash echo 'hello'
-
执行
-
命令
./test01.sh
-
结果
- 正常显示
-
-
-
场景2: ksh
-
概述
- ksh 是另外一种 shell
-
脚本: test02.sh
#!/bin/ksh echo 'hello'
-
执行1
-
命令
./test02.sh
-
结果
- 提示找不到 ksh
-
-
执行2
-
命令
> bash test02.sh
-
结果
- 执行成功
-
-
执行3
-
命令
> source test02.sh
-
结果
- 执行成功
-
-
3. 结论
-
centos 的默认 shell, 是 bash
- 这个不是上面操作得出的结论, 但是还是请各位记住
-
如果在 脚本 第一行用 #! 指定了执行 shell
- 则 ./ 方式执行, 会使用 指定的 shell
- bash 则会使用 bash 执行
- 在 命令行 指定的 shell 优先级更高
- source 则是使用 当前shell 来执行
4. 建议
- 脚本最好带上这个配置
- shell 之间的不同, 并不仅仅是 名字的差异
- 有一个标注, 可以更清楚的描述环境
- 为自己和后来人少埋一个坑
- shell 之间的不同, 并不仅仅是 名字的差异
ps
-
ref
- 学习 bash
-
其他
- 其实 py 脚本, 也有类似的东西
#!/usr/bin/python
- 当然这个要是有兴趣, 可以下来研究
- 其实 py 脚本, 也有类似的东西
尽量尝试解释清楚; 自己校对能力有限, 如果有错误欢迎指出