
Instala primero el instalador con composer global require laravel/installer y pregunta después a Composer dónde coloca sus ejecutables: composer global config bin-dir --absolute. Añade esa ruta a tu PATH en ~/.zshrc y ejecuta source ~/.zshrc. En macOS con bash, el archivo es ~/.bash_profile, nunca ~/.bashrc.
Escribes laravel new mi-proyecto y la terminal responde:
zsh: command not found: laravelEl problema casi nunca es Laravel. Lo que ocurre es que el ejecutable que instala Composer está en una carpeta que tu shell no consulta. Hay que localizar esa carpeta y añadirla al PATH.
Artículo del itinerario Desarrollo web. Procedimiento verificado el 2 de septiembre de 2026 en macOS 26.5.1 con Composer 2.9.5 y zsh.
Lo primero: ¿está instalado el instalador?
El comando laravel no viene con Composer, se instala aparte:
composer global require laravel/installerSi nunca lo has ejecutado, ningún ajuste del PATH hará aparecer el comando. Ten en cuenta que puedes prescindir perfectamente de él: composer create-project laravel/laravel mi-proyecto hace lo mismo sin instalador global.
Localizar la carpeta correcta, sin adivinarla
La mayoría de los tutoriales te hacen copiar $HOME/.composer/vendor/bin. A menudo es correcto, pero no siempre: Composer elige su carpeta personal según el sistema y las variables de entorno presentes. En lugar de apostar, pregúntaselo:
composer global config bin-dir --absolute/Users/gekkode/.composer/vendor/binEse es el resultado obtenido en macOS 26.5.1. En una instalación configurada para seguir las convenciones XDG, el comando puede devolver ~/.config/composer/vendor/bin. Usa siempre lo que muestre el comando en tu equipo, no lo que diga un tutorial.
Mientras no haya ningún paquete global instalado, la ruta es correcta pero la carpeta no existe. No pasa nada: añadir al PATH una carpeta inexistente no provoca ningún error, y se creará en el primer composer global require.
Añadir la carpeta al PATH con zsh
zsh es el shell por defecto de macOS desde Catalina. El archivo que hay que modificar es ~/.zshrc:
echo 'export PATH="$HOME/.composer/vendor/bin:$PATH"' >> ~/.zshrc
source ~/.zshrcSustituye la ruta por la que te haya devuelto el comando anterior. El source aplica el cambio a la sesión actual, sin él, solo tendrá efecto en una terminal nueva.
Comprueba:
which laravel
laravel --versionY si usas bash
En macOS Mojave y anteriores, o si has conservado bash a propósito, el archivo es ~/.bash_profile:
echo 'export PATH="$HOME/.composer/vendor/bin:$PATH"' >> ~/.bash_profile
source ~/.bash_profileEs el error clásico, y estaba en la versión anterior de este artículo. En macOS, el Terminal abre un login shell, que lee ~/.bash_profile y no ~/.bashrc. Una línea añadida en ~/.bashrc no se aplicará nunca, lo que da la impresión de que la operación no funciona.
Para saber qué shell estás usando:
echo $SHELL
# /bin/zsh → ~/.zshrc
# /bin/bash → ~/.bash_profileSi el comando sigue sin aparecer
Tres comprobaciones por orden. Primero, ¿contiene el PATH realmente esa carpeta?
echo $PATH | tr ':' '\n' | grep composerDespués, ¿está el ejecutable ahí?
ls "$(composer global config bin-dir --absolute)"Si no está, la instalación global ha fallado. Vuelve a lanzarla y lee la salida: un conflicto de versión de PHP es la causa más frecuente.
Por último, si el que no aparece es el propio Composer, es el mismo problema un nivel más abajo. En macOS, la instalación más sencilla pasa por Homebrew:
brew install composerEn un servidor la cuestión no se plantea en los mismos términos: consulta la instalación de Composer en Debian.
La alternativa que elimina el problema
Laravel Herd instala PHP, Composer y el instalador de Laravel en un entorno gestionado, y se ocupa él mismo del PATH. Para un equipo de desarrollo macOS montado desde cero, es el camino más corto: ya no hay ningún archivo de configuración del shell que tocar.
Si ya trabajas con una instalación de Homebrew que controlas, la manipulación del PATH descrita más arriba sigue siendo perfectamente válida.
Errores frecuentes
~/.bash_profile. Una línea añadida en ~/.bashrc no se aplica nunca.composer global config bin-dir --absolute da la ruta correcta en tu equipo.source sobre el archivo modificado.

