在设置了 BASH_ENV 的 bashrc 中调用 bash 时如何避免创建无限循环?

在设置了 BASH_ENV 的 bashrc 中调用 bash 时如何避免创建无限循环?

在 内部,我运行一个 bash 脚本(顶部~/.bashrc带有 的脚本)。#!/usr/bin/env bash我发现,当BASH_ENV设置为 my时~/.bashrc,这会在运行 bash 命令时设置无限循环。避免这种情况的最佳方法是什么?

这是我对发生的事情的理解(另见关于启动文件的 bash 手册):

  1. bash以非交互方式运行解析BASH_ENV~/.bashrc.
  2. bash开始采购~/.bashrc
  3. bash到达~/.bashrc调用 bash 脚本并启动bash子进程的行。
  4. 子流程bash解析BASH_ENV~/.bashrc,因此返回到此处的步骤 1,设置无限循环。

我遇到这个问题是因为我想使用我的标准环境运行一些 cron 作业,并找到了BASH_ENV在 crontab 中设置的建议。我在这里将其作为一个问题发布,因为我在网上搜索中找不到讨论的问题,而且似乎有些东西可能会影响其他人。我在下面发布我自己的解决方案,但可能还有更好的解决方案。

答案1

在放置的顶部.bashrc

unset BASH_ENV

如果.bashrc已经获取来设置环境,则无需将来bash再次调用来设置环境。

相关内容