2017-05-31 50 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