在shell中定义"条件"别名的最佳方法

use*_*592 13 bash shell alias zsh

如果找到"ag"可执行文件,那么定义别名的最佳方法是什么?

if (( $+commands[ag] )) ; then alias grep='ag'; fi
Run Code Online (Sandbox Code Playgroud)

要么

[[ -s $(which ag) ]] && alias grep='ag'
Run Code Online (Sandbox Code Playgroud)

要么

if $(which ag >& /dev/null); then alias grep='ag'; fi
Run Code Online (Sandbox Code Playgroud)

要么 ...?

最好的,我的意思是更强大,更高性能和/或更便携(Bash,Zsh).

你的建议是什么?

tri*_*eee 11

我不认为简单明显的POSIX变体与你提出的(大多数非便携式)替代方案相比会有什么缺点.

type ag >/dev/null 2>&1 && alias grep=ag
Run Code Online (Sandbox Code Playgroud)