A medida que voy instalando herramientas de desarrollo como por ejemplo SDKMAN!, Anaconda, Node Version Manager, el fichero .zshrc
va aumentando en tamaño y complejidad.
Para mantener cada una de estas configuraciones de forma independiente y poder compartirlas entre varios equipos lo que hago es tener un directorio ~/.aliases
donde voy añadiendo un fichero *.aliases
para cada configuración. Hay que remarcar que no hay problema en aplicar esta solución si en lugar de zsh usamos bash.
Este directorio lo tengo sincronizado entre varios equipos a través de git y gitlab.com.
En el fichero ~/.zshrc
, al final de todo, he añadido las siguientes líneas. Estas línea le indican a la shell que ejecute todos los scripts con extensión *.aliases
que se encuentran en el directorio ~/.aliases
:
for file in $(ls -1 ~/.aliases/*.aliases | sort); do source $file done
Además los scripts se ejecutan de forma ordenada por nombre.
Estos son los ficheros que tengo dentro de la carpeta ~/.aliases
actualmente.
ls -1 .aliases/* .aliases/android.aliases .aliases/conda.aliases .aliases/custom.aliases .aliases/nvm.aliases .aliases/sdkman.aliases .aliases/tilix.aliases .aliases/venv.aliases
En los siguientes apartados se muestra el contenido de los diferentes ficheros de configuración:
sdkman.aliases
#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!! export SDKMAN_DIR="$HOME/.sdkman" [[ -s "$HOME/.sdkman/bin/sdkman-init.sh" ]] && source "$HOME/.sdkman/bin/sdkman-init.sh"
conda.aliases
# added by Anaconda3 2018.12 installer # >>> conda init >>> # !! Contents within this block are managed by 'conda init' !! __conda_setup="$(CONDA_REPORT_ERRORS=false '/opt/anaconda3/bin/conda' shell.bash hook 2> /dev/null)" if [ $? -eq 0 ]; then \eval "$__conda_setup" else if [ -f "/opt/anaconda3/etc/profile.d/conda.sh" ]; then . "/opt/anaconda3/etc/profile.d/conda.sh" CONDA_CHANGEPS1=false conda activate base else \export PATH="/opt/anaconda3/bin:$PATH" fi fi unset __conda_setup # <<< conda init <<< conda deactivate
nvm.aliases
export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
tilix.aliases
if [ $TILIX_ID ] || [ $VTE_VERSION ]; then source /etc/profile.d/vte.sh fi
android.aliases
export PATH=$PATH:$HOME/Android/Sdk/tools:$HOME/Android/Sdk/platform-tools
venv.aliases
venv-activate() { if [ ! -f "$HOME/.virtualenvs/$1/bin/activate" ]; then echo "virtual environment '$1' doesn't exists" return 1 fi source $HOME/.virtualenvs/$1/bin/activate }
custom.aliases
source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh alias src="cd $HOME/Src" alias doc="cd $HOME/Qsync/Documents"