2017-05-31 52 views
1

我用哦,MY-的zsh一个有.zshrc以下别名:别名递归执行上OSX

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) 

回答

1

这与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 

虽然第一次使用的which composer将返回/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 

添加换行符,使其明显将返回composer: aliased to ...。这导致错误信息输入文件composer:(注意冒号)无法找到。

定义别名只是一次很可能在大多数情况下工作,但为了安全起见,你可以告诉which明确地寻找路径(忽略建宏,别名和函数)与参数-p

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

做得很好;对非zsh用户的说明:在zsh中,which是一个_builtin_,它也报告_aliases_的定义。 – mklement0

-1

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

+1

这没有解释你是如何在第一时间使用'screen'的话,答案是没有用的,这样的解释不可能对其他人有用。我只想删除这个问题。 – chepner