我运行了以下 Bash 函数,将带有扩展变量的字符串添加到我的末尾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 和剪切操作删除字符串的所有数千个重复之后mark-set
,我想问为什么会发生这种情况(并且不断发生)?
答案1
您定义了一个名为 的函数,向该调用alias
添加了一行,然后将源代码输入到您的 shell(其中已经定义了该函数)。您获取的调用该函数,该函数添加另一行并再次获取脚本,再次调用该函数.bashrc
alias ...
.bashrc
alias
每次已经运行一次,导致指数级增长。
更改您的函数的名称。