2014-03-26 49 views

回答

5

這不能用別名來完成(或者真的不應該)。在執行之前,別名會被其值替換,因此不提供任何控制結構。

如果您需要更多的控制,功能也更適合:

function rm mv() { 
    if git rev-parse --is-inside-work-tree &> /dev/null 
    then 
     git $0 "[email protected]" 
    else 
     command $0 "[email protected]" 
    fi 
} 

這就造成了兩個功能 - rmmv - 具有相同體。取決於在工作樹內部,使用所使用的命令名稱($0)調用git或調用命令本身。

它是使用command(其中明確要求從$PATH而不是函數或別名的外部命令)或撥打了他們的完整路徑(/bin/$0)可執行重要的,否則函數將遞歸調用。