Se você deseja saber qual programa o nome de um comando executará na sua sessão atual do Terminal do Mac, primeiro pergunte ao zsh como ele interpreta esse nome e, em seguida, pesquise em PATH por arquivos executáveis. Isso é importante porque um comando pode resolver para um alias ou função de shell antes de a shell chegar a um arquivo. No macOS, a shell padrão do Terminal é o zsh, embora um perfil do Terminal ou um administrador possa selecionar outra shell. Guia do Terminal da Apple
Pergunte ao zsh o que o nome do comando significa
No Terminal, execute whence -v com o nome do comando, sem argumentos que o executariam. Por exemplo:
whence -v python3
A saída identifica o tipo de comando que o zsh usaria: ela pode informar um alias, uma função, um comando integrado (builtin) ou um comando externo. Se informar um alias ou função, o nome não identifica diretamente o executável que será executado; o alias ou função pode se expandir para outro comando ou executar vários comandos. O zsh documenta whence como uma forma de relatar como um nome seria interpretado. Documentação de comandos integrados da shell zsh
Para um rótulo de tipo compacto, use:
whence -w python3
Se o resultado for function, inspecione a definição com functions python3. Se for alias, inspecione-a com alias python3. Esses comandos exibem a definição atual da shell; eles não executam o destino. Uma função pode chamar outra função ou programa externo, portanto siga a definição até chegar ao comando que realiza o trabalho real.
Encontre arquivos executáveis no PATH
Para encontrar o arquivo que o zsh localizaria por meio de PATH, mesmo quando um alias ou função oculta o nome, use:
whence -p python3
Para listar todas as entradas correspondentes no PATH, use:
whence -pa python3
A opção -p solicita que o zsh pesquise no PATH apesar de uma definição em nível de shell, e -a relata todas as correspondências em vez de apenas a primeira. A primeira correspondência no PATH é o arquivo executável que o zsh encontraria para uma busca normal de comando externo. O zsh também pode mostrar como um link simbólico resolve com whence -ps python3. Documentação de comandos integrados da shell zsh
A lista PATH pertence ao ambiente de shell atual. Veja seus diretórios com print -r -- $PATH; o zsh apresenta seu parâmetro path como um valor separado por dois-pontos nesse formato. Uma alteração na ordem do PATH pode mudar qual nome duplicado é encontrado primeiro. A Apple descreve o PATH como uma lista de diretórios nos quais a shell procura por comandos e observa que as configurações do ambiente de shell são específicas ao seu contexto de execução. Apple: Usar variáveis de ambiente no Terminal do Mac
Verifique como um comando foi chamado
Um comando escrito com uma barra, como ./python3 ou /opt/tools/python3, especifica um caminho em vez de solicitar que a shell pesquise o nome no PATH. O caminho relativo ./python3 significa um arquivo no diretório atual. A introdução à linha de comando da Apple explica que um nome sem uma barra inicial é relativo ao diretório atual quando usado como caminho, e que ./ executa explicitamente um programa do diretório atual. Apple: Manual Básico de Linha de Comando
Para um nome simples como python3, inspecione tanto o seu tipo na shell quanto as correspondências no PATH. Para um caminho contendo /, inspecione esse arquivo exato. Coloque entre aspas caminhos que contenham espaços ou metacaracteres da shell ao executá-los; por exemplo, "/Applications/Tool Folder/tool". A introdução da Apple documenta como colocar entre aspas ou escapar caracteres especiais em caminhos. Isso localiza o arquivo chamado sem alterar como o comando é executado.
Saiba o que essa pesquisa não pode comprovar
Uma consulta descreve a resolução da shell atual, não de todos os contextos de execução. Outra janela do Terminal pode ter um PATH ou configuração de shell diferente, e um comando pode se comportar de forma diferente em um script, em outra shell ou em um aplicativo iniciado fora do Terminal. A Apple observa que as janelas do Terminal não compartilham ambientes de shell. Apple: Usar variáveis de ambiente no Terminal do Mac
Além disso, encontrar o caminho de um arquivo não prova por si só que ele é o processo usado em última análise em todos os casos: o arquivo pode ser um link simbólico, um script que inicia outro programa ou um inicializador. whence -ps pode revelar a resolução do link simbólico, mas rastrear o comportamento subsequente de um script requer inspecionar esse script ou a documentação do programa. Se whence -p não retornar nenhum caminho, esse nome não possui correspondência no PATH nesta shell; ele ainda pode ser um alias, função, comando integrado ou um comando disponível apenas por meio de um caminho explícito.
Para uma verificação de rotina, execute whence -v name primeiro, inspecione qualquer alias ou função e, em seguida, use whence -pa name para comparar os executáveis candidatos. Essa sequência responde tanto ao que o zsh reconhece quanto a qual arquivo sua pesquisa no PATH encontraria.
Fontes
Alterar a shell padrão no Terminal do Mac — Suporte da Apple
Shell Builtin Commands — The Z Shell
Usar variáveis de ambiente no Terminal do Mac — Suporte da Apple
Command Line Primer — Apple Developer