我运行了以下 Bash 函数,该函数将带有扩展变量的字符串添加到 my 的末尾bashrc
:
alias() {
echo "alias $repo=\"$HOME\"/$repo/$repo.sh" >> "$HOME"/.bashrc
source "$HOME"/.bashrc 2>/dev/null
}
alias
为了运行它,我复制了它,粘贴到 Bash 终端(它出现过一次)并通过点击执行Enter。
我得到的输出~/.bashrc
是上面字符串的大约一千行:
别名 $repo=\"$HOME\"/$repo/$repo.sh
最后一个命令 ( source /home/user/.bashrc
) 一直在无休止地执行(我假设是由于对函数的无休止调用)所以我立即用^C
组合键中止了。
在用 Nano 和 cut 操作删除了字符串的所有数千个重复之后mark-set
,我想问为什么会发生这种情况(并继续发生)?
您定义了一个名为 的函数
alias
,向该函数添加了一行.bashrc
callsalias ...
,然后将源代码.bashrc
放入您的 shell(其中已经定义了该函数)。您采购的函数调用了该函数,该alias
函数添加了另一行并再次采购脚本,每次运行时再次调用该函数一次,从而导致指数增长。更改函数的名称。