Mover .bash_profile a Dropbox

9

Me gustaría mover mi .bash_profile a Dropbox para tener mis funciones de Terminal personalizadas disponibles en todos mis Mac. ¿Es esto posible y hay posibles implicaciones?

Por ejemplo, tengo un comando para hacer un git add y commit de una vez:

function gax() {
    git add .
    git commit -m "$1"
}

No he podido encontrar ninguna información sobre esto.

swelet
fuente
2
Sé que ya tienes una respuesta, pero me hace pensar en hacer un enlace suave al dropbox .bash_profile. Algo sobre lo que pensar.
JMY1000
@ JMY1000 con mi solución, puede agregar cosas adicionales dependiendo de la máquina en la que se encuentre, simplemente coloque los comandos después de la ifdeclaración. Pero tienes razón, esto también podría ser un enlace simbólico.
Mateusz Szlosek
2
ln -s ~/path/to/dropbox/bash_profile_file ~/.bash_profile
2426021684

Respuestas:

18

Puede tener un archivo adicional en la carpeta de Dropbox y luego en cada máquina dentro de su .bash_profilearchivo coloque esto:

FILE="/path/to/DropboxFolder/shared_bash_profile_file"
if [ -f $FILE ];
then
    source $FILE
fi
Mateusz Szlosek
fuente
55
Dado que ARCHIVO podría usarse para otras aplicaciones y
cosas
4

Creo que es mejor idea subir a un repositorio. Déjame decirte cómo lo hice.

Yo versiono todo el ~/bindirectorio. Mi .bash_profileestá en ese directorio. El $HOME/.bash_profilees un enlace a ~/bin/.bash_profile.

Mi .bash_profileaspecto es este:

if [[ $OSTYPE == darwin* ]]; then
    . ~/bin/includes/exports-osx.sh
    . ~/bin/includes/bash-stuff-osx.sh
    . ~/bin/includes/aliases-osx.sh
    . ~/bin/includes/functions-osx.sh
elif [[ $OSTYPE == linux* ]]; then
    . ~/bin/includes/exports-linux.sh
    . ~/bin/includes/terminal-linux.sh
    . ~/bin/includes/aliases-linux.sh
    . ~/bin/includes/ssh-keys-linux.sh
    . ~/bin/includes/bash-stuff-linux.sh
fi

. ~/bin/includes/bash-stuff.sh
. ~/bin/includes/aliases.sh
. ~/bin/includes/powerline.sh
. ~/bin/includes/functions.sh
. ~/bin/includes/work-stuff.sh

De esa manera puedo seguir fácilmente los cambios.

Para mantener la actualización del repositorio, puede crear un script cron o LaunchAgents que extraiga los cambios en su ~/bindirectorio una vez al día:

cd ~/bin && git pull origin $(git name-rev --name-only HEAD)
jherran
fuente
2
¿Qué ventajas tendría esto sobre la solución simple que presentó Mateusz?
swelet
2
@swelet desde mi punto de vista, dos ventajas principales: puede revertir fácilmente los cambios a un punto y puede realizar un seguimiento de cada cambio.
jherran
@jherran O también puedes poner el repositorio de git en la carpeta de Dropbox. Sin embargo, creo que Dropbox tiene algunas versiones en sí.
pydsigner
2
@pydsigner He tenido problemas con un repositorio de Git en Dropbox. Supongo que las condiciones de carrera ya que Dropbox intenta sincronizar los cambios en un archivo que Git intenta volver a abrir mientras todavía se está utilizando.
millimoose
Esta solución utiliza implícitamente un repositorio público para un archivo crítico del sistema, lo que puede generar problemas de seguridad. Dropbox y otros son privados.
Nueva Alejandría
4

No es una buena idea poner todo .bash_profileen Dropbox, ya sea modificando las rutas de Dropbox o mediante un enlace simbólico. Diferentes máquinas pueden requerir contenido ligeramente diferente de este archivo. Ejemplos: diferentes versiones de software instaladas que requieren diferentes configuraciones, diferentes rutas, diferentes nombres para cosas como particiones debajo /dev/.

Haga esto en su lugar: coloque todas sus funciones y alias personalizados en un archivo $HOME/Dropbox/my_functions.shy luego incluya la línea

. $HOME/Dropbox/my_functions.sh

en su .bash_profile.

Federico Poloni
fuente