Esta es una buena oportunidad de aprendizaje y parece que nadie ha desglosado lo que estaban haciendo tus comandos, así que lo haré:
echo "export PATH=$PATH:~/Desktop/nand2tetris/tools" >> ~/.zshrc ; source ~/.zshrc
Los anteriores son dos comandos separados, separados por un punto y coma (como los comandos en 'shell tipo bash' (como la shell Zsh) siempre están). El primero es este:
echo "export PATH=$PATH:~/Desktop/nand2tetris/tools" >> ~/.zshrc
En primer lugar, echo
es como un comando tonto, simplemente imprime lo que se le proporciona como entrada (entre comillas) en la 'salida estándar'. Pero lo que lo hace poderoso es que puedes tomar esa salida y redirigirla a otro lugar; en este caso particular, estás redirigiendo su salida al archivo "~/.zshrc" usando el comando >
(añadir al archivo). Es decir, si hago echo "Hola" >> file1.txt
, entonces >
simplemente añadirá "Hola" a un archivo llamado file1.txt (creando el archivo primero, si no existe aún).
Ahora centrémonos en la entrada que proporcionaste a echo
(recuerda que las comillas se usaron solo porque 'echo' las necesita, pero el comando real es lo que está dentro de las comillas):
export PATH=$PATH:~/Desktop/nand2tetris/tools
El comando export ayuda a "actualizar" la variable de entorno $PATH. La variable de entorno PATH especifica todos los directorios que se deben buscar cuando escribes cualquier comando. Por ejemplo, si escribes python
, tu shell (zsh) buscará en todos los directorios de PATH para ver si hay algún "python" en tu sistema. (Los comandos 'echo' y 'export' serían buscados de la misma manera, pero son un poco especiales, por lo que están integrados/reservados. ¡Pero es la misma idea!)
Ahora, ¿a qué se está actualizando el PATH? Primero, nota que export PATH=$PATH
actualizará PATH a la variable PATH ya existente; es decir, no actualiza nada en absoluto. Para ver tu PATH existente, escribe echo $PATH
. Debería darte una cadena de directorios separados por ":" en tu ruta existente (igual a lo que mostraste en tu captura de pantalla arriba).
Pero en realidad estás pidiendo añadir "~/Desktop/nand2tetris/tools" a tu PATH existente cuando dices export PATH=$PATH:~/Desktop/nand2tetris/tools
(nota los dos puntos aquí).
Estás viendo una "plelta de directorios que aparecen de repente" porque la shell autocompletó lo que significa $PATH y está simplemente expandiendo esa parte (echo $PATH
) fuera.
Entonces, ¿qué debería ocurrir después de que ejecutes este primer comando? Debería añadir la línea export PATH=$PATH:~/Desktop/nand2tetris/tools
en tu archivo .zshrc
. ¡Asegúrate de que sea así: cat ~/.zshrc
!
Finalmente, source ~/.zshrc
simplemente actualiza tu archivo zshrc para que se ejecuten todos los comandos en él (incluidos los comandos de exportación) (añadir un comando no es suficiente; también debes ejecutarlo para que tenga efecto, en este caso, añadiendo la nueva ruta a la variable de entorno PATH ).