加载前验证 .bash_profile?

加载前验证 .bash_profile?

许多命令行程序提供开关,允许您在加载配置文件之前对其进行验证。 (例如,允许用户在尝试使用该文件启动 nginx 之前nginx -c path/to/file -t验证位于的配置文件。path/to/file

.bash_profilebash 中有类似的功能吗?

答案1

巴什有一个-n选项那将

读取命令但不执行它们。这可用于检查脚本的语法错误。

它将输出到 stderr 并设置 $?如果存在语法问题,则为 2。您可以在 .bash_profile 上使用它,如下所示:

bash -n .bash_profile
if [[ $? -ne 0 ]]
then
   # handle an error
fi

根据注释字符串,我忍不住添加以不同方式添加这些全局变量的建议。考虑一个有点人为的情况,用户的 .bash_profile 末尾有一个“return”。未来的 bash 调用将跳过附加任何内容(例如变量赋值)。考虑将这些全局变量放在 /etc 下的某处(例如 /etc/profile.d,假设这些文件由您的 /etc/profile 获取);这样,您可以根据各种 shell 语法(csh、bash)设置它们,并且不必检查它们是否在用户环境中设置或弄乱其环境文件。

另一种选择是将这些全局变量分配放入您选择的自定义 /etc 文件中,并将代码添加到 .bash_profile 文件中以获取该文件(如果存在)。这与您当前的计划具有相同的缺点 - 编辑用户的本地文件 - 但增加了针对不同用户/场景使用不同全局文件的灵活性。

相关内容