我想知道您想要获取而不是运行的 shell 脚本的文件类型扩展名是否有约定。例如:
如果我想在子 shell 中运行这个脚本。
./script.sh
如果我想记住从当前 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