shell 脚本源文件扩展名的官方标准/约定

shell 脚本源文件扩展名的官方标准/约定

我想知道您想要获取而不是运行的 shell 脚本的文件类型扩展名是否有约定。例如:

  1. 如果我想在子 shell 中运行这个脚本。

     ./script.sh 
    
  2. 如果我想记住从当前 shell 运行这个脚本。

     . script.source 
    

有没有一个约定(例如 POSIX)对于第二个示例中的文件类型?类似.source.sourceme


更新

这个问题不询问任何意见。我明确表示我想知道此类脚本是否有标准化的文件扩展名。这个问题甚至不像这个关于类似问题的广受好评的问题(bash 脚本使用 .sh 或 .bash 扩展名?)。

答案1

我会使用.sh(对于 POSIXsh语言的文件,.bash对于非 sh 兼容的bash文件,即扩展名标识脚本编写的语言)用于要获取的文件(或更通常不打算执行),并且要执行的文件没有扩展名。

您还可以添加:

#! /bin/echo Please-source

she-bang,这样当错误执行时(尽管我希望这些文件不应该被授予执行权限,这已经会阻止执行),您会收到一条通知,应该改为获取它。

答案2

对于源文件,我认为最好的方法是配置脚本的文件的 .conf 和具有函数或其他实用程序的文件的 .shlib 或 .shlibs。

如果你想防止你的脚本使用错误的 shell 运行,而 hashbang 对你来说还不够,你可以使用这个:

if [ "$(readlink "/proc/$$/exe")" != "/bin/bash" ]; then
      echo >&2 "CAUTION: Wrong interpreter detected. You must use bash."
      exit 1
fi

相关内容