当.bashrc来源时,如何停止别名内的命令运行?

时间:2014-01-27 12:55:34

标签: macos bash

我的问题:每当我打开一个新的终端窗口时,~/.bashrc都会被找到,并且执行下面描述的别名的yolk -U | awk '{print $1}'部分。

这导致我的大多数新窗口都在顶部显示“奶酪店没有新包”这一短语,它会阻止提示实际显示,直到命令完成。这可能会定期花费不小的秒数。

我的问题:我怎么能阻止它?在我明确使用别名之前,我不希望这个运行。

在我的~/.bashrc文件中,我有以下alias

alias pipup="sudo pip install -U `yolk -U | awk '{print $1}'`"

我在virtualenv之外使用它来更新全局包,例如pipsetuptoolsvirtualenvvirtualenvwrapperyolk,一些短信,以及一对cli公用事业。

别名本身工作正常,命令按预期运行。

OS X 10.9.1(虽然从10.6开始这个“问题”已经存在) bash 3.2.51

1 个答案:

答案 0 :(得分:3)

别名需要用单引号。

alias pipup='sudo pip install -U `yolk -U | awk "{print \$1}"`'

您报告为“正在工作”的内容一直都是错误的:它在您登录时运行yolk,而别名最终会看起来像

alias pipup='sudo pip install -U fnord'

您应该能够通过检查alias pipup的输出来验证。

虽然系统不是很复杂或令人惊讶,但是shell的引用设施通常知之甚少。参见例如http://mywiki.wooledge.org/Quotes

正如@devnull在评论中指出的那样,shell函数将是一个更好的解决方案。别名是历史载重量。