在 内部,我运行一个 bash 脚本(顶部~/.bashrc
带有 的脚本)。#!/usr/bin/env bash
我发现,当BASH_ENV
设置为 my时~/.bashrc
,这会在运行 bash 命令时设置无限循环。避免这种情况的最佳方法是什么?
这是我对发生的事情的理解(另见关于启动文件的 bash 手册):
bash
以非交互方式运行解析BASH_ENV
为~/.bashrc
.bash
开始采购~/.bashrc
。bash
到达~/.bashrc
调用 bash 脚本并启动bash
子进程的行。- 子流程
bash
解析BASH_ENV
为~/.bashrc
,因此返回到此处的步骤 1,设置无限循环。
我遇到这个问题是因为我想使用我的标准环境运行一些 cron 作业,并找到了BASH_ENV
在 crontab 中设置的建议。我在这里将其作为一个问题发布,因为我在网上搜索中找不到讨论的问题,而且似乎有些东西可能会影响其他人。我在下面发布我自己的解决方案,但可能还有更好的解决方案。
答案1
在放置的顶部.bashrc
:
unset BASH_ENV
如果.bashrc
已经获取来设置环境,则无需将来bash
再次调用来设置环境。