1

我正在使用 oh-my-zsh 在 .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)
4

2 回答 2

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)"
于 2017-06-01T13:25:28.980 回答
-1

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

于 2017-05-31T14:17:07.913 回答