Se você repete um comando curto no Terminal do seu Mac, um alias pode ser suficiente. Se a tarefa precisa de argumentos, várias etapas, decisões ou uso fora do seu shell interativo, escreva um script. Para um caso intermediário — especialmente um comando que precisa de argumentos, mas deve alterar o diretório do shell atual —, considere uma função zsh. Este guia ajuda você a escolher com base no que o comando deve fazer e onde você precisa que ele funcione.
O que um alias faz no macOS
Um alias é um nome curto que o zsh expande no texto do comando conforme você digita. Por exemplo, se você executa git status com frequência, pode adicionar alias gs='git status' ao ~/.zshrc. A Apple documenta o zsh como o shell padrão do Terminal, embora o shell do Mac possa ser alterado; portanto, verifique sua configuração se um alias se comportar de forma diferente do esperado. Guia do Terminal da Apple
Use um alias quando a substituição for essencialmente fixa: uma grafia mais curta, uma opção padrão ou um comando simples que você executa interativamente. Ele é fácil de editar ou remover e mantém a ação completa visível quando você inspeciona a definição. No zsh, os aliases não aceitam argumentos como parâmetros; eles são substituições de texto. Isso torna o alias uma escolha inadequada quando você precisa passar um caminho ou outro valor dinâmico para a ação. Guia do usuário do Zsh sobre aliases
Os aliases também estão vinculados à análise sintática (parsing) e à inicialização do shell. Uma definição carregada a partir do ~/.zshrc é útil em uma sessão interativa do Terminal, mas você não deve presumir que outro programa, um shell não interativo ou um script lerá esse arquivo e reconhecerá o alias. Se o comando precisar ser chamado de forma confiável a partir de contextos diferentes, use um script ou outra interface de comando explícita.
Quando um script é a melhor opção
Escolha um script quando a tarefa repetida for um pequeno procedimento em vez de um comando fixo. Os indícios incluem múltiplas etapas, argumentos, verificações, ramificações, comportamento claro de sucesso ou falha, ou a necessidade de invocá-lo por meio de um caminho ou a partir de outra ferramenta. A Apple descreve os scripts de shell como uma maneira de combinar ferramentas de linha de comando, manipular argumentos e tomar decisões com base em códigos de retorno. Os scripts de shell também apresentam diferenças de dialeto, portanto, escolha e documente o interpretador em vez de presumir que todos os shells interpretam a mesma sintaxe. Primer de Shell Scripting da Apple
Por exemplo, se uma rotina recebe uma pasta de projeto como entrada, verifica se ela existe e, em seguida, executa a mesma sequência nela, um script pode tornar essa entrada explícita e organizar as etapas em uma ordem legível. Antes de automatizar alterações como excluir ou sobrescrever arquivos, adicione verificações e deixe claro o comportamento em caso de falha. Um script de shell é executado como um comando em seu próprio contexto de execução; não se deve esperar que a alteração de diretório dentro dele mude o diretório do shell do Terminal chamador. O Zsh documenta a execução de comandos de script separadamente da execução de funções no shell chamador. Execução de comandos no Zsh
Um script não é automaticamente mais seguro ou mais portátil. Ele é mais um arquivo para manter, e seu comportamento depende do seu interpretador, dos comandos disponíveis no Mac, das permissões e das suposições sobre caminhos ou dados de entrada. O guia da Apple adverte especificamente que dialetos de shell e diferenças nos utilitários da plataforma podem levar a falhas. Mantenha os scripts com escopo restrito, use aspas nas expansões de variáveis quando apropriado e teste-os com entradas de exemplo seguras antes de usá-los em dados importantes.
Use uma função zsh para o caso intermediário
Uma função costuma ser a melhor escolha se você precisa de lógica reutilizável e argumentos no seu shell atual do Terminal, mas não precisa de um arquivo independente. Por exemplo, uma função pode aceitar um diretório como argumento, validá-lo e, em seguida, executar cd nele; como as funções do zsh são executadas no processo do shell chamador, essa alteração de diretório persiste na sessão interativa. O Zsh documenta que as funções recebem argumentos e são executadas no mesmo processo que o chamador. Funções do Zsh
Defina uma função no ~/.zshrc quando quiser que ela esteja disponível em sessões interativas do Terminal. Dê preferência a um script quando a ação deva funcionar como um comando separado, ser chamada por ferramentas ou outros scripts, ou for mais fácil de compartilhar como um arquivo. Prefira um alias quando tudo o que você deseja for um nome fácil de lembrar para uma única linha de comando fixa.
Um teste rápido para decidir
Pergunte a si mesmo o que mudaria se você executasse a tarefa novamente. Se nada mudar além do nome do comando, use um alias. Se um valor mudar a cada vez, como uma pasta ou nome de arquivo, use uma função ou script que o receba. Se a tarefa tiver etapas ou decisões, use um script. Se ela precisar alterar a sessão atual do Terminal, como o diretório de trabalho, use uma função.
Em seguida, verifique onde você precisa do comando. Apenas no Terminal? Um alias ou função no ~/.zshrc pode ser suficiente. Um comando que possa ser chamado separadamente? Use um script, com um interpretador apropriado e permissões deliberadas. Compartilhado com outro Mac? Documente as premissas e ferramentas necessárias; um script de shell não é automaticamente portátil só porque roda no Terminal.
A linha divisória prática é a interface da tarefa: aliases renomeiam textos de comandos fixos, funções adicionam comportamento reutilizável dentro do shell atual e scripts empacotam um procedimento como um comando separado. Comece com a opção mais simples que atenda a essas necessidades e migre para uma função ou script quando argumentos, lógica ou o local onde o comando deve ser executado tornarem o alias inadequado.
Fontes
Altere o shell padrão no Terminal do Mac — Suporte da Apple
Shell Scripting Primer: Introduction — Apple Developer
Command Execution — Zsh
Functions — Zsh