当前位置: 首页 > 知识库问答 >
问题:

为什么#!/usr/bin/env bash优于#!/bin/bash?

龚奕
2023-03-14

我在许多地方看到过,包括本网站上的建议(首选的Bash shebang是什么?),使用#!/usr/bin/env Bash而不是#!/bin/Bash。我甚至看到一个有进取心的人建议使用#!/bin/bash是错误的,这样做会丢失bash功能。

尽管如此,我在一个严格控制的测试环境中使用bash,在这个环境中,循环中的每个驱动器本质上都是单个主驱动器的克隆。我理解可移植性的论点,尽管它不一定适用于我的情况。是否还有其他理由选择#!/usr/bin/env bash而不是替代方案?假设考虑可移植性,是否有理由使用它会破坏功能?

共有1个答案

商鸿哲
2023-03-14

#!/usr/bin/env路径中搜索bash,并且bash并不总是在/bin中,特别是非Linux系统。例如,在我的OpenBSD系统中,它位于/usr/local/bin中,因为它是作为可选包安装的。

如果您完全确定bash/bin中,并且将一直在,那么直接将其放在shebang中并没有什么坏处--但我建议不要这样做,因为脚本和程序的生命都超出了我们最初认为的生命。

 类似资料:
  • 在Bash脚本的头中,这两个语句之间有什么区别: >

  • 问题内容: 在Bash脚本的标头中,这两个语句之间有什么区别: 当查阅 手册页时,得到以下定义: 这是什么意思? 问题答案: 运行命令,通过具有寻找不管程序的默认版本是在当前的利益 ENV ironment。 这样,您不必在系统上的特定位置查找它,因为这些路径可能在不同系统上的不同位置。只要它在您的路径中,它就会找到它。 缺点是,如果您希望支持Linux,则将无法传递多个参数(例如,您将无法编写)

  • 本文向大家介绍bash: /usr/bin/autocrorder: /usr/bin/python^M: bad interpreter: No such file or directory,包括了bash: /usr/bin/autocrorder: /usr/bin/python^M: bad interpreter: No such file or directory的使用技巧和注意事项,

  • 问题内容: 我正在尝试编译我的程序,它返回此错误: 在我的makefile文件中,我使用命令并链接到我的库,这是到我的库的另一个目录的符号链接。 是否可以添加选项以使其正常工作? 问题答案: 如果您的图书馆名称是say 并且位于路径上,请说: 然后将其链接到您的程序:

  • 问题内容: 我正在尝试使用Python 2.7安装MySQLdb。我收到的错误如下所示: 显然,它找不到Python 2.7。展望我看到: 该符号是什么意思?谁能建议对此错误采取补救措施? 问题答案: 它找不到Python库,而不是可执行文件。运行以查看Python库的位置,然后将其添加到库路径(例如,如果位于中,则要调用)。 该符号意味着该文件是一个符号链接; 表示它是可执行文件(这些文件由产生

  • 因此,我试图使用make-f Makefile编译一个程序,但我得到了以下错误/usr/bin/ld:not find-lgd 生成文件: 替换(libgd.a libgd.la libgd.so libgd.so.2 libgd.so.2.0.0)后,我收到以下错误: