在linux的一些脚本,需在开头一行指定脚本的解释程序,如:
#!/usr/bin/env bash
#!/usr/bin/bash
#!/usr/bin/env python 告诉操作系统执行这个脚本的时候,调用/usr/bin下的python解释器;
#!/usr/bin/python 告诉操作系统到env设置里查找python的安装路径,再调用对应路径下的解释器程序完成操作
两种形式的区别是什么?
脚本用env启动的原因,是因为脚本解释器在linux中可能被安装于不同的目录,env可以在系统的PATH目录中查找。同时,env还规定一些系统环境量。 而如果直接将解释器路径写死在脚本里,可能在某些系统就会存在找不到解释器的兼容性问题。
还可以加上-P参数来指定一些目录去寻找perl这个程序, #!/usr/bin/env -S -P /usr/local/bin:/usr/bin:${PATH} perl --->在/usr/local/bin和/usr/bin和PATH变量中定义的目录下寻找perl。