shell脚本开头#!/usr/bin/env bash,#!/usr/bin/bash,#!/bin/bash的比较

Posted Locutus

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本开头#!/usr/bin/env bash,#!/usr/bin/bash,#!/bin/bash的比较相关的知识,希望对你有一定的参考价值。

辨析

  • #!/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具体位置的优先选择。

以上是关于shell脚本开头#!/usr/bin/env bash,#!/usr/bin/bash,#!/bin/bash的比较的主要内容,如果未能解决你的问题,请参考以下文章

关于#!/usr/bin/env python 的用法

ubuntu 执行Python脚本出现: /usr/bin/env: ‘python ’: No such file or directory

PyCharm中脚本模板 #!/usr/bin/env python与#!/usr/bin/python

#!/usr/bin/env python与#!/usr/bin/python的区别

php脚本#!/usr/bin/env php 写法

Python头部2行 #!/usr/bin/python 和 #!/usr/bin/env 的区别 以及编码方式的指定 2018-10-23