Principalmente semântica. Embora combinar as strings de comando em variáveis seja útil para fins de script, não é bom para o aliasing. Um motivo visível é a conclusão - enquanto vários scripts de conclusão, como bash_completion
, podem lidar com aliases (o que infelizmente nunca foi meu caso), fazendo com que eles suponham que variáveis são extensíveis a comandos podem torná-lo confuso.
O segundo motivo é alias
permitir que você crie atalhos de comando sem usar nenhum comando mágico nem caractere como $
para executá-los. Desta forma, a substituição é transparente e permite substituir as configurações padrão para alguns programas. Um bom exemplo é ls
, que geralmente é alias como ls --color=auto
por padrão. Os usuários não precisam saber disso para ver a saída colorida. Algumas distribuições alias rm
e comandos relacionados como rm -i
, para que funcionem no modo interativo e possam evitar remoções acidentais.
Variáveis, por outro lado, podem ser úteis para alguns usos que não requerem imitação de binários. Um exemplo amplo e bom é EDITOR
variável ambiental. Isso torna possível não apenas executar seu editor favorito usando $EDITOR
, mas também fazer com que outros programas (que podem não ter acesso ao shell) possam executá-lo, tirando seu valor do ambiente de execução.
Pode haver algumas outras coisas das quais não conheço, mas o resultado é o mesmo: esses comandos devem ser usados como pretendem.