Você precisa de um espaço entre [[ e $2 .
Para o bash [[ não é sintaxe, é um comando interno (ou palavra-chave para ser preciso). O Bash executará [[ com todos os seus parâmetros, incluindo o fechamento ]] . Quando você não tiver espaço entre [[ e $2 bash não verá a palavra-chave [[ , em vez disso, verá essa coisa: [[-b (após expandir $2 para -b ). O Bash tentará executar a string [[-b como um comando e falhará. Veja help [[ para mais informações.
Pelo mesmo motivo, você também precisa de um espaço antes do fechamento ]] .
Aqui está o seu código corrigido:
git() {
if [[ $1 == 'checkout' ]] && [[ $2 == '-b' ]];
then echo 'yep!';
fi;
command git "$@";
}
Veja também as armadilhas do bash e o bash FAQ . IMO é a melhor maneira de aprender bash scripting ... ou a melhor maneira de aprender a não fazer muito bash scripting.