太多shebang(脚本声明)行 - 任何减少数量的方法?

Modified on: Sat, 30 Jun 2018 05:06:00 +0800

我有一个由大约20个小.sh文件组成的项目。我将这些命名为“小”,因为通常,没有文件超过20行代码。我采用模块化方法,因为我忠于Unix哲学,对我来说更容易维护项目。

在每个.sh文件的开头,我输入#!/bin/bash

简单地说,我理解脚本声明有两个目的:

  1. 它们帮助用户回想起执行文件所需的shell(比如,几年后不使用该文件)。
  2. 他们确保脚本只运行某个shell(在这种情况下为Bash),以防止在使用其他shell时出现意外行为。
  3. 醇>

    当项目开始从5个文件增加到20个文件或从20个文件增加到50个文件(不是这种情况,只是为了演示)时,我们有20行或50行的脚本声明。我承认,尽管对某些人来说可能很有趣,但对于我来说,使用20或50而不是每个项目1(可能在主文件中)感觉有点多余该项目)。

    在某些主文件中,有没有办法通过使用某些“全局”脚本声明来避免这种假定的20或50或更多行脚本声明的冗余?

作者:,user9303970

最佳答案

即使您的项目现在可能只包含50个Bash脚本,但它迟早会开始累积用其他语言(如Perl或Python)编写的脚本(这些脚本语言具有Bash所没有的优点)。

如果每个脚本中没有正确的#! -line,那么使用各种脚本非常困难,而不知道要使用哪种解释器。如果每个脚本都是从其他脚本执行并不重要,这只会将难度从最终用户转移到开发人员。这两组人都不应该知道脚本写成什么语言才能使用它。

在没有#! -line且没有显式解释器的情况下执行的Shell脚本以不同的方式执行,具体取决于shell调用它们(参见例如问题哪个shell解释器运行一个没有shebang的脚本?,特别是Stéphane的答案),这不是你想要的生产环境(你想要一致的行为,甚至可能的可移植性)。

使用显式解释器执行的脚本将由该解释器运行,无论#! -line是什么。如果您决定以Python或任何其他语言重新实现Bash脚本,这将导致问题进一步发生。

你应该花费额外的键击,并且总是在每个脚本中添加#! -line。


在某些环境中,每个项目的每个脚本都有多段样板法律文本。非常高兴它只是一个#! -line,在你的项目中感觉“多余”。

作者:,Kusalananda

相关问答

添加新评论