Movendo .bash_profile para o Dropbox

9

Gostaria de mover meu .bash_profile para o Dropbox para ter minhas funções personalizadas do Terminal disponíveis em todos os meus Macs. Isso é possível e existem implicações possíveis?

Por exemplo, eu tenho um comando para fazer um git add e commit de uma só vez:

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

Não consegui encontrar nenhuma informação sobre isso.

swelet
fonte
2
Eu sei que você já tem uma resposta, mas isso me fez pensar em simplesmente fazer um link direto para o dropbox .bash_profile. Algo para pensar sobre.
JMY1000
@ JMY1000 com a minha solução, você pode colocar coisas adicionais, dependendo da máquina em que está - basta colocar os comandos após a ifdeclaração. Mas você está certo, isso também pode ser um link simbólico.
Mateusz Szlosek
2
ln -s ~/path/to/dropbox/bash_profile_file ~/.bash_profile
2426021684

Respostas:

18

Você pode ter um arquivo adicional na pasta Dropbox e, em todas as máquinas do seu .bash_profilearquivo, coloque o seguinte:

FILE="/path/to/DropboxFolder/shared_bash_profile_file"
if [ -f $FILE ];
then
    source $FILE
fi
Mateusz Szlosek
fonte
5
Desde arquivo pode ser usado para outros aplicativos e tal, você noite deseja nomear a variável algo como "DROPBOX-RC"
grepsedawk
4

Eu acho que é melhor ideia fazer upload para um repositório. Deixe-me contar como eu fiz isso.

Eu versão o ~/bindiretório inteiro . Meu .bash_profileestá nesse diretório. O $HOME/.bash_profileé um link para ~/bin/.bash_profile.

Minha .bash_profileaparência é assim:

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

Dessa forma, eu posso facilmente acompanhar as alterações.

Para manter a atualização do repositório, você pode criar um script cron ou LaunchAgents que faça as alterações em seu ~/bindiretório uma vez por dia:

cd ~/bin && git pull origin $(git name-rev --name-only HEAD)
jherran
fonte
2
Que vantagens isso teria sobre a solução simples que Mateusz apresentava?
swelet 10/06/16
2
@swelet do meu ponto de vista, duas vantagens principais: você pode facilmente reverter as alterações para um ponto e acompanhar todas as alterações.
jherran
@ jherran Ou você também pode colocar o repositório git na pasta Dropbox. Eu acho que o Dropbox possui algumas versões.
pydsigner
2
@pydsigner Eu tive problemas com um repositório Git no Dropbox. Estou supondo condições de corrida, pois o Dropbox tenta sincronizar as alterações em um arquivo que o Git tenta reabrir enquanto ainda está sendo usado.
millimoose
Essa solução usa implicitamente um repositório público para um arquivo crítico do sistema, o que pode levar a problemas de segurança. Dropbox e outros são privados.
New Alexandria
4

Não é uma boa ideia colocar o todo .bash_profileno Dropbox, aprimorando os caminhos do Dropbox ou por meio de um link simbólico. Máquinas diferentes podem exigir conteúdo ligeiramente diferente deste arquivo. Exemplos: diferentes versões de software instaladas que exigem configuração diferente, caminhos diferentes, nomes diferentes para itens como partições abaixo /dev/.

Faça isso: coloque todas as suas funções e aliases personalizados em um arquivo $HOME/Dropbox/my_functions.she inclua a linha

. $HOME/Dropbox/my_functions.sh

no seu .bash_profile.

Federico Poloni
fonte