辨析
#!/usr/bin/env bash
:在不同的系统上提供了一些灵活性
通过#!/usr/bin/env bash
运行程序,用户不需要去寻找程序在系统中的位置(因为在不同的系统,命令或程序存放的位置可能不同),只要程序在你的$PATH中;
通过#!/usr/bin/env bash
运行程序另一个好处是,它会根据你的环境寻找并运行默认的版本,提供灵活性。
不好的地方是,有可能在一个多用户的系统中,别人在你的$PATH中放置了一个bash,可能出现错误。
-
#!/usr/bin/bash
:在linux上不一定都有,对给定的可执行文件指定bash位置 -
#!/bin/bash
:在linux上一定存在,对给定的可执行文件指定bash位置
到底选哪个?
#!/usr/bin/env bash
是大部分情况下的第一选择,因为它提供了灵活性,特别是你想在不同的bash版本下运行shell脚本。
#!/usr/bin/bash
指定了bash的具体位置,在某些情况下更安全,因为它限制了代码注入的可能。
在一些系统上可能没有#!/usr/bin/bash
,而#!/bin/bash
则一定存在。所以#!/bin/bash
是指定bash具体位置的优先选择。