这里简单介绍一下 Shebang(#!) 的用法
基础用法
1. 只在 类 Unix 系统中有效,windows 中可以写,但无效
2. 必须写在文件 开头,第一行的前两个字符
3. shebang 指明了执行这个脚本文件的解释程序,或者说解释器
4. 如果 #! 之后的解释程序是一个可执行文件,那么执行这个脚本时,它就会把文件名及其参数一起作为参数传给那个解释程序去执行
5. #! 之后的解释程序,需要写其绝对路径(如:#!/bin/bash),它是不会自动到 $PATH 中寻找解释器的
异常情况
1. 如果脚本中没有 #! 指定解释器,那么它执行时会默认用当前 shell 去解释这个脚本 (即 $SHELL 环境变量)
2. 如果 #! 指定的解释器没有可执行权限,则会报错 “bad interpreter: Permission denied”
3. 如果 #! 指定的解释器不是一个可执行文件,那么这句将被忽略,执行时会用 shell 解释
4. 如果 #! 指定的解释器不存在,则会报错 “bad interpreter: No such file or directory”
5. 如果你使用”bash test.sh”这样的命令来执行脚本,那么 #! 这一行将会被忽略掉,解释器当然是用命令行中显式指定的 bash
在 python 中有两种写法
#!/usr/bin/python
一般情况下,python 会被安装到 /usr/bin 目录下,此时这么写是可以的;
这种方式相当于写死了 python 解释器的路径;
#!/usr/bin/env python
这种方式是为了防止用户没有把 python 安装到 /usr/bin 目录下,此时他会到 env 设置里查找 python 的安装路径,在调用该路径下的 python 解释器执行脚本;
这种方式会自动寻找 python 解释器,推荐写法