#!/usr/bin/env bash

#!/usr/bin/env bash #lends you some flexibility on different systems
#!/usr/bin/bash     #gives you explicit control on a given system of what executable is called

env 命令用于显示系统中已存在的环境变量,以及在定义的环境中执行指令

通过/usr/bin/env 运行程序,用户不需要去寻找程序在系统中的位置(因为在不同的系统,命令或程序存放的位置可能不同),只要程序在你的$PATH中;

通过/usr/bin/env 运行程序另一个好处是,它会根据你的环境寻找并运行默认的版本,提供灵活性。

不好的地方是,可以伪造一个假的命令解释器(如自己写一个假的 bash),并将伪造后的命令解释器所在目录写入 PATH 环境变量中并位于靠前位置,这样,就形成了安全隐患

而 /bin 由于一般只有 root 用户才有操作权限,所以,#!/bin/bash 这种写法相对较为安全

猜你喜欢

转载自blog.csdn.net/qq_37381177/article/details/111229675