Diferencia y usos de los ficheros ZSH en MacOS
¿Qué son los ficheros .ZSH?
Los ficheros .ZSH son los responsables de ayudar a "customizar" nuestra terminal Shell en nuestro MacOS.
Estos ficheros siempre irán en nuestra carpeta raíz de usuario (para saber esa ruta podríamos lanzar el comando pwd
), siempre será un fichero oculto y en caso de ser editado alguno de los ficheros tendríamos que actualizar la terminal o bien cerrando la sesión o si no lanzando el comando source
.
¿Cuántos ficheros disponemos y cuáles son sus usos?
zlogin
: Son comandos lanzados al login del sistema, este fichero debería contener comandos que sólo deberán ser ejecutados en el login.zprofile
: Es similar al anterior, con la diferencia de que este se ejecuta antes.zlogout
: Al igual que elzlogin
este fichero se ejecutará al hacer logout en el sistema.zshenv
: Este fichero ejecutará comandos de edición de rutas y variables de entorno pero no puede tener comandos que de algún tipo de resultado.zshrc
: Para mí el más "importante", es el lugar donde poder crear alias, funciones o comandos externos que ejecutar.
¿Cuál es el orden de ejecución de los ficheros?
.zshenv
-> .zprofile
-> .zshrc
-> .zlogin
-> .zlogout
Usos principales del .zshrc
Este fichero, como hemos comentado antes, se encontrará en nuestra ruta principal como usuarios, si hacemos cd ~ && ls -a
, nos iremos a la ruta principal de nuestro usuario y mostraremos los ficheros ocultos.
Si este fichero no lo vemos no hay de que preocuparse, es posible que no lo tengamos creado, haremos sencillamente touch .zshrc
.
Aquí podríamos crear:
-> Alias: Un shortcut de un comando largo que usemos bastante a menudo. En mi caso por ejemplo tengo un atajo para conectarme a MySQL. Ejemplo: alias mysql-connect='mysql -uroot -p -P3307 -h 127.0.0.1'
-> Functions: Un shortcut de funciones a los cuales le podemos añadir parámetros para facilitar/crear una función dinámica. Ejemplo: function docker-logs() { docker logs --follow $1 }
, en este caso es una función que facilita el ver los logs de un ID concreto de un contenedor Docker.