tengo carpeta en Dropbox con el mundial, por vía oral, y por configuraciones cáscara de la máquina:
$ ls ~/Dropbox/shell/bash
bashbootstrap bashrc
bashrc-Darwin bashrc-Darwin-laptopname bashrc-Darwin-mininame
bashrc-Linux bashrc-Linux-machineone bashrc-Linux-machinetwo
bashrc
se carga en cada máquina, bashrc-Linux
, bashrc-Darwin
se cargan en sus respectivos sistemas operativos, y varias configuraciones son específicas a máquinas individuales. (Por cierto, Darwin es el nombre del kernel BSD de OS X.)
Lo que lo une es el archivo bashbootstrap
. Carga cada archivo de configuración aplicable para aumentar la especificidad, lo que permite que prevalezca la precedencia por sistema operativo y por anulaciones de máquina. Además, omitimos silenciosamente los archivos de configuración faltantes; no necesita crear archivos de configuración vacíos para cada una de sus máquinas para mantener la secuencia de comandos feliz.
en una máquina nueva, después de instalar Dropbox en ~/Dropbox
, que se alejan del defecto .bashrc
y simplemente crear enlaces a los archivos de arranque en su lugar en su lugar:
$ mv ~/.bashrc ~/.bashrc.bak
$ ln -s ~/Dropbox/shell/bash/bashbootstrap ~/.bashrc
Ah, y aquí están los contenidos del archivo bashbootstrap
:
if [ -z "$PS1" ]; then
return
fi
dropboxshelldir=~/Dropbox/shell
dropboxdir=$dropboxshelldir/bash
masterbashrc=$dropboxdir/bashrc
osbashrc=$masterbashrc-`uname`
localbashrc=$osbashrc-`hostname | cut -d. -f1`
echo -n "Applicable shell configs: "
for bashfile in "$masterbashrc" "$osbashrc" "$localbashrc"; do
if [ -r $bashfile ]; then
. $bashfile
echo -n "`basename $bashfile` "
fi
done
echo
# Set convenience aliases
myed=${VISUAL:-${EDITOR:-vim}}
alias editbashrc="$myed $masterbashrc"
alias editosbashrc="$myed $osbashrc"
alias editlocalbashrc="$myed $localbashrc"
Una nota final, esta secuencia de comandos también proporciona tres alias de conveniencia para la edición de los archivos de configuración Bash sin tener que recordar dónde se almacenan.
editbashrc
: Editar el archivo de configuración global.
editosbashrc
: Edite el archivo de configuración específico del sistema operativo.
editlocalbashrc
: Edite el archivo de configuración específico de la máquina.
Solo probé esto en Bash, pero podría funcionar en otras conchas como Bash. Pero, como dicen, su kilometraje puede variar.
Hice una publicación en el blog acerca de este here.