Si quieres saber qué programa ejecutará un nombre de comando en tu sesión actual de Terminal de Mac, primero pregúntale a zsh cómo interpreta ese nombre y luego busca archivos ejecutables en PATH. Esto es importante porque un comando puede resolverse en un alias o en una función de shell antes de que la shell busque un archivo. En macOS, la shell predeterminada de Terminal es zsh, aunque un perfil de Terminal o un administrador pueden seleccionar otra shell. Guía de Terminal de Apple

Pregúntale a zsh qué significa el nombre del comando

En Terminal, ejecuta whence -v con el nombre del comando, sin argumentos que lo ejecuten. Por ejemplo:

whence -v python3

La salida identifica el tipo de comando que zsh usaría: puede indicar un alias, una función, una orden integrada (builtin) o un comando externo. Si indica un alias o una función, el nombre no identifica directamente el ejecutable que se ejecutará; el alias o la función pueden expandirse a otro comando o ejecutar varios comandos. La documentación de zsh describe whence como una forma de informar cómo se interpretaría un nombre. Documentación de comandos integrados de zsh

Para obtener una etiqueta de tipo compacta, usa:

whence -w python3

Si el resultado es function, inspecciona la definición con functions python3. Si es alias, inspecciónala con alias python3. Estos comandos muestran la definición actual de la shell; no ejecutan el destino. Una función podría llamar a otra función o a un programa externo, así que sigue la definición hasta llegar al comando que realiza el trabajo real.

Encuentra archivos ejecutables en PATH

Para encontrar el archivo que zsh localizaría a través de PATH, incluso cuando un alias o una función ocultan el nombre, usa:

whence -p python3

Para listar cada entrada coincidente en PATH, usa:

whence -pa python3

La opción -p le pide a zsh que busque en PATH a pesar de que exista una definición a nivel de shell, y -a informa todas las coincidencias en lugar de solo la primera. La primera coincidencia de PATH es el archivo ejecutable que zsh encontraría para una búsqueda normal de comando externo. zsh también puede mostrar cómo se resuelve un enlace simbólico con whence -ps python3. Documentación de comandos integrados de zsh

La lista PATH pertenece al entorno actual de la shell. Consulta sus directorios con print -r -- $PATH; zsh presenta su parámetro path como un valor separado por dos puntos en este formato. Un cambio en el orden de PATH puede alterar qué nombre duplicado se encuentra primero. Apple describe PATH como una lista de directorios en los que la shell busca comandos, y señala que la configuración del entorno de la shell es específica de su contexto de ejecución. Apple: Usar variables de entorno en Terminal en el Mac

Comprueba cómo se invocó un comando

Un comando escrito con una barra diagonal, como ./python3 o /opt/tools/python3, especifica una ruta en lugar de pedirle a la shell que busque el nombre en PATH. La ruta relativa ./python3 se refiere a un archivo en el directorio actual. El manual básico de línea de comandos de Apple explica que un nombre sin una barra diagonal inicial es relativo al directorio actual cuando se usa como ruta, y que ./ ejecuta explícitamente un programa del directorio actual. Apple: Command Line Primer

Para un nombre simple como python3, inspecciona tanto su tipo de shell como las coincidencias en PATH. Para una ruta que contenga /, inspecciona ese archivo exacto. Pon entre comillas las rutas que contengan espacios o metacaracteres de shell al ejecutarlas; por ejemplo, "/Applications/Tool Folder/tool". El manual de Apple documenta el entrecomillado o escape de caracteres especiales en rutas. Esto localiza el archivo invocado sin alterar el modo en que se ejecuta el comando.

Ten en cuenta lo que esta búsqueda no puede demostrar

Una búsqueda describe la resolución de la shell actual, no la de todos los contextos de ejecución. Otra ventana de Terminal puede tener un PATH o una configuración de shell diferentes, y un comando puede comportarse de forma distinta en un script, en otra shell o en una aplicación iniciada fuera de Terminal. Apple señala que las ventanas de Terminal no comparten los entornos de shell. Apple: Usar variables de entorno en Terminal en el Mac

Además, encontrar una ruta de archivo no demuestra por sí mismo que sea el proceso utilizado en última instancia en todos los casos: el archivo puede ser un enlace simbólico, un script que inicia otro programa o un lanzador. whence -ps puede revelar la resolución de un enlace simbólico, pero rastrear el comportamiento posterior de un script requiere inspeccionar dicho script o la documentación del programa. Si whence -p no devuelve ninguna ruta, ese nombre no tiene ninguna coincidencia en PATH en esta shell; aun así, podría ser un alias, una función, una orden integrada o un comando disponible únicamente a través de una ruta explícita.

Para una comprobación rutinaria, ejecuta primero whence -v name, inspecciona cualquier alias o función y, a continuación, usa whence -pa name para comparar los posibles ejecutables. Esa secuencia responde tanto a lo que zsh reconoce como a qué archivo encontraría su búsqueda en PATH.

Fuentes