Przeniesienie .bash_profile do Dropbox

9

Chciałbym przenieść mój .bash_profile do Dropbox, aby moje niestandardowe funkcje terminala były dostępne na wszystkich moich komputerach Mac. Czy to możliwe i czy są możliwe implikacje?

Na przykład mam polecenie do dodania i zatwierdzenia git za jednym razem:

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

Nie udało mi się znaleźć żadnych informacji na ten temat.

nabrać
źródło
2
Wiem, że masz już odpowiedź, ale to sprawia, że ​​myślę o zwykłym linkowaniu do .bash_profile. Coś do przemyślenia.
JMY1000,
@ JMY1000 z moim rozwiązaniem możesz umieścić dodatkowe rzeczy w zależności od komputera, na którym jesteś - po prostu wstaw polecenia po ifinstrukcji. Ale masz rację, to może być również dowiązanie symboliczne.
Mateusz Szlosek
2
ln -s ~/path/to/dropbox/bash_profile_file ~/.bash_profile
2426021684,

Odpowiedzi:

18

Możesz mieć dodatkowy plik w folderze Dropbox, a następnie na każdym komputerze w .bash_profilepliku umieść to:

FILE="/path/to/DropboxFolder/shared_bash_profile_file"
if [ -f $FILE ];
then
    source $FILE
fi
Mateusz Szlosek
źródło
5
Ponieważ PLIK może być używany do innych aplikacji i tak, chcesz nazwać zmienną coś w rodzaju „DROPBOX-RC”
grepsedawk
4

Myślę, że lepszym pomysłem jest przesłanie do repozytorium. Pozwól, że powiem ci, jak to zrobiłem.

Wersję całego ~/binkatalogu. Mój .bash_profilejest w tym katalogu. To $HOME/.bash_profilejest link do ~/bin/.bash_profile.

Mój .bash_profilewygląda tak:

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

W ten sposób mogę łatwo śledzić zmiany.

Aby zachować aktualizację repo, możesz utworzyć skrypt cron lub LaunchAgents, który ~/binraz dziennie pobiera zmiany z katalogu:

cd ~/bin && git pull origin $(git name-rev --name-only HEAD)
Jherran
źródło
2
Jakie miałoby to zalety w porównaniu z prostym rozwiązaniem, które przedstawił Mateusz?
swelet
2
@swelet z mojego punktu widzenia, dwie główne zalety: możesz łatwo przywrócić zmiany do punktu i możesz śledzić każdą zmianę.
jherran
@jherran Lub możesz również umieścić repozytorium git w folderze Dropbox. Myślę jednak, że Dropbox ma pewne wersje.
pydsigner
2
@pydsigner Miałem problem z repozytorium Git w Dropbox. Zgaduję warunki wyścigu, gdy Dropbox próbuje zsynchronizować zmiany do pliku, który Git próbuje ponownie otworzyć, gdy jest on nadal używany.
millimoose
To rozwiązanie domyślnie korzysta z publicznego repozytorium krytycznego pliku systemowego, co może prowadzić do problemów z bezpieczeństwem. Dropbox i inne są prywatne.
Nowa Aleksandria
4

Nie jest dobrym pomysłem umieszczenie całości .bash_profilew Dropbox, albo poprzez ulepszenie ścieżek Dropbox, albo poprzez dowiązanie symboliczne. Różne komputery mogą wymagać nieco innej zawartości tego pliku. Przykłady: zainstalowane różne wersje oprogramowania wymagające innej konfiguracji, różnych ścieżek, różnych nazw dla rzeczy takich jak partycje pod /dev/.

Zrób to zamiast tego: umieść wszystkie dostosowane funkcje i aliasy w pliku, $HOME/Dropbox/my_functions.sha następnie dołącz wiersz

. $HOME/Dropbox/my_functions.sh

w twoim .bash_profile.

Federico Poloni
źródło