Псевдоним выполняется рекурсивно на OSX

Я использую 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)

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)"

Это была проблема с GNU screen сессия. Создание нового screen Окно псевдоним работает как положено.

Другие вопросы по тегам