2008-10-20 12 views
8

Soy un usuario de línea de comandos bastante activo y tengo cuentas de shell en todas partes. MacBooks, máquinas de escritorio Linux, servidores Linux, Cygwin en XP, lo que sea.Mantener las configuraciones de shell sincronizadas en varias máquinas

¿Cómo puedo mantener mi configuración de shell (.bashrc, .vimrc etc.) sincronizada en todas estas máquinas usando las herramientas limitadas disponibles en todas las plataformas?

He estado usando rsync de una manera bastante limitada que implica la copia manual de algunos archivos cuando los necesito, pero quiero una forma estándar para configurar el mismo entorno de shell básico en todas mis máquinas. Cuéntame tu estrategia de administración de cuentas shell.

Respuesta

12

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.

2

He utilizado el control de versiones para esto en el pasado (svn, mercurial, etc ...). Puede configurar su propio servidor o usar uno alojado. Dropbox también funciona.

0

Si tiene acceso al control de código fuente, simplemente los verificaría. De esta forma puede sincronizarlos en varias máquinas y puede comparar/retrotraer si es necesario. Si no tiene CVS/SVN en el trabajo, hay opciones gratuitas disponibles.

Cuestiones relacionadas