Bash脚本:非法别名

时间:2014-07-30 20:32:14

标签: bash shell

我正在搞乱我的.bash_profile文件(Mac OSX),当我尝试设置别名时:

  

alias。=“。〜/ .bash_profile”

我随后无法获取我的.bash_profile文件(退出文件后键入“source .bash_profile”并停留在非终止进程中)。当我将别名更改为:

  

alias s =“。〜/ .bash_profile”

一切都很好。这是什么交易?

1 个答案:

答案 0 :(得分:6)

当调用的文件(在这种情况下,~/.bash_profile)也使用.时,会发生递归调用,因为.会再次引用同一文件。

如果~/.bash_profile尝试使用此行调用~/.bashrc,请说出来:

[[ -f ~/.bashrc ]] && . ~/.bashrc

该命令将首先作为别名展开,它将改为:

[[ -f ~/.bashrc ]] && . ~/.bash_profile ~/.bashrc

这将使真正的.调用~/.bash_profile而不是~/.bashrc作为位置参数参数。这使得无限循环。

重现:

  1. ~.bash_profile必须存在,并且包含使用.调用另一个文件的行。
  2. 运行alias .="echo -n x; . ~/.bash_profile"; .
  3. 它应该产生无限x,直到shell崩溃。