每次写脚本的时候都很困惑到底第一行怎么写,索性一次查清楚。十分感谢原作者。
引用链接:
前言
写shell脚本、python脚本的时候经常会在文件头添加这些东西:
#! /bin/bash
#! /bin/sh
#! /usr/bin/env python3
#! /usr/bin/python3
复制代码
那这几种其他注释有什么区别?
#! /bin/sh
与 #! /bin/bash
的区别
#!/bin/sh
是指此脚本使用/bin/sh来解释执行,#!
是特殊的表示符,其后面跟的是此解释此脚本的shell的路径。
可以通过
cat /etc/shells
查看系统支持的shell格式
GNU/Linux操作系统中的/bin/sh本是bash (Bourne-Again Shell) 的符号链接,但鉴于bash过于复杂,有人把bash从NetBSD移植到Linux并更名为dash (Debian Almquist Shell),并建议将/bin/sh指向它,以获得更快的脚本执行速度。Dash Shell 比Bash Shell小的多,符合POSIX标准。
所以Debian中默认的是dash
,而不是bash
。
dash
和bash
并不是完全兼容的
所以bash
下面写的脚本很可能不能在dash
下运行。建议使用#! /bin/bash
或者#! /usr/bin/env bash
来明确制定使用的是bash还是dash。
python3
的注释区别
python3的注释也是为了制定解析器,但是由于每个系统的python3安装路径可能不同,所以用#! /usr/bin/env python3
可以根据系统变量来查找到python3的安装位置。