Repercusiones para compartir .bashrc en todas las máquinas con Dropbox?

21

Trabajo en muchas máquinas diferentes, todas ejecutan Ubuntu (no siempre la misma versión). Tengo algunas personalizaciones realmente básicas para mi aviso que me gustaría tener disponibles en todas las máquinas.

Actualmente uso Dropbox y almaceno todos mis otros "archivos de puntos" allí, como mi .vim / .vimrc .gitconfig .ackrc. Luego simplemente los vinculo a mi carpeta de inicio desde mi carpeta de Dropbox. Voilà, todas las máquinas en sincronización.

No estoy seguro de las repercusiones de hacer algo como esto con mi bashrc. ¿Alguien puede ofrecer sugerencias? ¿Quizás una manera fácil de cargar un archivo separado en el bashrc?

    
pregunta Alan Peabody 01.12.2010 - 02:34

5 respuestas

26

No veo ninguna repercusión real, pero supongo que depende de lo que tengas ahí. Si solo se trata de alias rápidos que funcionan igual en todas partes, y cosas cosméticas, no veo ningún problema.

Podrías mover tu .bashrc a algún lugar en tu carpeta de Dropbox y luego enlazarlo simbólicamente en cada una de las máquinas.

  mkdir -p ~/Dropbox/dotfiles
  mv ~/.bashrc ~/Dropbox/dotfiles/.bashrc
  ln -s ~/Dropbox/dotfiles/.bashrc ~/.bashrc

De hecho, tengo bastantes archivos de puntos en mi carpeta de inicio que en realidad son enlaces simbólicos a carpetas compartidas en mi cuenta de Dropbox.

Otra opción es que usted pueda crear un archivo dentro de su carpeta de Dropbox que se obtendrá de su .bashrc :

Es decir, en su .bashrc , ponga:

source $HOME/Dropbox/dotfiles/bashrc-shared-settings

y luego crea un archivo bashrc-shared-settings que es lo que quieres usar en todas las máquinas, y aún puedes mantener archivos .bashrc separados.

(También puedes abreviar source como solo . en bash.)

    
respondido por el frabjous 01.12.2010 - 03:32
8

El principal riesgo que puedo pensar es que debe recordar que la sincronización no es lo mismo que hacer una copia de seguridad. Cualquier error se sincronizará con todas sus máquinas.

Para incluir un archivo separado en su ~/.bashrc agregue algo así:

if [ -f ~/.foo ]; then
    . ~/.foo
fi

Donde ~ / .foo es el archivo separado.

    
respondido por el andrewsomething 01.12.2010 - 03:37
5

¡Generalmente, la centralización de los archivos de configuración es algo bueno! Si desea personalizar lo que se ejecuta en función de un sistema operativo o nombre de host determinado, puede hacer algo como lo siguiente en su .bashrc:

export HOSTNAME='hostname | cut -f1 -d'.''

if [ -f ~/.bash/os/$OSTYPE.sh ]; then
    source ~/.bash/os/$OSTYPE.sh
fi

if [ -f ~/.bash/host/$HOSTNAME.sh ]; then
    source ~/.bash/host/$HOSTNAME.sh
fi

Luego, cree un directorio .bash y los directorios os y host debajo de ese y ponga cualquier configuración personalizada en los archivos llamados & lt; whatever & gt; .sh donde & lt; whatever & gt; es el tipo de sistema operativo o el host que desea personalizar.

Guardo todos estos archivos en Dropbox, y tengo un script bash llamado link_dropbox en mi carpeta de Dropbox que me ayuda a facilitar la vinculación en ellos:

#!/bin/bash

#Array of <source><space><link> target->symlink mappings
linkarray=( "~/Dropbox/config/bashrc ~/.bashrc"
            "~/Dropbox/config/bash ~/.bash"
            "~/Dropbox/config/vimrc ~/.vimrc"
            "~/Dropbox/config/vim ~/.vim"
            "~/Dropbox/config/ssh ~/.ssh"
            "~/Dropbox/config/screenrc ~/.screenrc"
            "~/Dropbox/bin ~/bin" )

#turn off globbing to split each entry on spaces
set -f
for entry in "${linkarray[@]}"
do
    targets=( $entry )
    #eval will expand the tildes
    eval from=${targets[0]}
    eval to=${targets[1]}
        #if the target exists and is not a symlink, err on the side of caution
        if [ -e "$to" -a ! -L "$to" ]
        then
            echo "$to exists and is not a link, skipping..."
        else
            #probably safe to delete an existing symlink
            if [ -e "$to" ]
            then
                rm $to
            fi
            ln -s $from $to
        fi
done
    
respondido por el Alaska 11.05.2011 - 03:52
2

Mantengo mi .bashrc enlazado en Dropbox junto con muchos otros archivos de configuración (.gitconfig, .vimrc, etc.).

Obtengo un archivo llamado .bashrc_local al final para otras configuraciones que me gustaría mantener independiente de la máquina.

if [ -f ~/.bashrc_local ]; then
    . ~/.bashrc_local
fi
    
respondido por el Rolo 07.03.2011 - 10:03
1

La sincronización con Dropbox es genial, pero si no quieres instalar Dropbox en el servidor, puedes implementar mi método.

  1. Crea un archivo con tu configuración de bash compartida en tu carpeta de Dropbox.

  2. Haga clic con el botón derecho en el archivo y haga clic en "Compartir enlace" en el menú de Dropbox.

  3. Luego haga clic en "Obtener enlace". Esto copiará el enlace compartido a su portapapeles.

  4. Agregue? dl = 1 al final del archivo compartido. Esto le permite obtener el archivo sin procesar. Su enlace compartido ahora debería verse similar al mío: enlace

  5. Agregue esta línea a ~ / .bashrc

    source $HOME/.bash_shared_settings

  6. Crea un cronjob con tu intervalo preferido usando este comando (Reemplazar con tu archivo compartido de Dropbox)

    */30 * * * * curl -sS https://dl.dropbox.com/s/h25q5c3czo6mnjo/shared_bash_settings.sh?dl=1 > ~/.bash_shared_settings; chmod +x ~/.bash_shared_settings;

Esto actualizará tu copia de ~ / .bash_shared_settings cada media hora. Cada vez que recargues tu sesión, incluirás los últimos cambios.

    
respondido por el Nick Woodhams 16.01.2013 - 00:44

Lea otras preguntas en las etiquetas