别名在OSX上递归执行

时间:2017-05-31 13:53:23

标签: macos zsh oh-my-zsh zshrc zsh-alias

我正在使用oh-my-zsh a。在.zshrc中有以下别名:

alias composer="php -d memory_limit=-1 $(which composer)"

我得到以下输出:

$ composer
Could not open input file: composer:

并且:

$ which composer
composer: aliased to php -d memory_limit=-1 composer: aliased to php -d memory_limit=-1 composer: aliased to php -d memory_limit=-1 /usr/local/bin/composer
$ zsh --version
zsh 5.2 (x86_64-apple-darwin15.4.0)

在Linux下,它按预期工作:

$ which composer
composer: aliased to php -d memory_limit=-1 /usr/bin/composer
$ zsh --version
zsh 5.3.1 (x86_64-unknown-linux-gnu)

2 个答案:

答案 0 :(得分:2)

这与它在OS X或Linux上的使用或屏幕的使用无关。它看起来像你运行命令

alias composer="php -d memory_limit=-1 $(which composer)"

多次。这导致composer的递归定义:

composer: aliased to php -d memory_limit=-1 composer: aliased to php -d memory_limit=-1 composer: aliased to php -d memory_limit=-1 /usr/local/bin/composer

添加换行符以使其显而易见:

composer: aliased to php -d memory_limit=-1 \
composer: aliased to php -d memory_limit=-1 \
composer: aliased to php -d memory_limit=-1 \
/usr/local/bin/composer

首次使用which composer将返回/usr/local/bin/composer(或类似路径),后续使用将返回composer: aliased to ...。这会导致出现错误消息,指出无法找到输入文件composer:(注意冒号)。

只定义一次别名可能在大多数情况下都有效,但为了安全起见,您可以明确告诉which使用参数-p查找路径(忽略内置,别名和函数):

alias composer="php -d memory_limit=-1 $(which -p composer)"

答案 1 :(得分:-1)

这是GNU screen会话的问题。创建一个新的screen窗口,别名按预期工作。