Переміщення .bash_profile до Dropbox


9

Я хотів би перенести свій .bash_profile в Dropbox, щоб мої користувальницькі функції терміналів були доступні на всіх моїх Mac. Чи це можливо і чи можливі наслідки?

Наприклад, у мене є команда для того, щоб робити git додавання та фіксацію за один раз:

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

Я не зміг знайти жодної інформації з цього приводу.


2
Я знаю, що ви вже отримали відповідь, але це змусило мене подумати про те, щоб просто перейти до папки .bash_profile. Щось подумати.
JMY1000

@ JMY1000 за допомогою мого рішення ви можете розмістити додаткові речі залежно від машини, на якій ви працюєте - просто поставте команди після ifзаяви. Але ти маєш рацію, це також може бути символьним посиланням.
Матеуш Шлосек

2
ln -s ~/path/to/dropbox/bash_profile_file ~/.bash_profile
2426021684

Відповіді:


18

Ви можете мати додатковий файл у папці Dropbox, а потім на кожну машину всередині вашого .bash_profileфайлу ставити це:

FILE="/path/to/DropboxFolder/shared_bash_profile_file"
if [ -f $FILE ];
then
    source $FILE
fi

5
Оскільки файл FILE можна використовувати для інших програм і подібних, ви хочете назвати змінну на кшталт "DROPBOX-RC"
grepsedawk

4

Я думаю, що краще ідею завантажити в сховище. Дозвольте розповісти, як я це зробив.

Я верблю весь ~/binкаталог. Моє .bash_profileв цьому каталозі. Це $HOME/.bash_profileпосилання на ~/bin/.bash_profile.

Моє .bash_profileвиглядає так:

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

Таким чином я можу легко відстежувати зміни.

Щоб зберегти оновлення репо, ви можете створити cron або LaunchAgents скрипт, який тягне зміни у вашому ~/binкаталозі раз на день:

cd ~/bin && git pull origin $(git name-rev --name-only HEAD)

2
Які переваги це матиме над простим рішенням, яке представив Матеуш?
пурпур

2
@swelet, з моєї точки зору, дві основні переваги: ​​ви можете легко повернути зміни до точки, і ви можете відслідковувати кожну зміну.
jherran

@jherran Або ви можете також помістити git repo у папку Dropbox. Я думаю, хоча у Dropbox є сама версія.
пидсигнер

2
@pydsigner У мене виникли проблеми з Git repo в Dropbox. Я здогадуюсь про умови гонки, коли Dropbox намагається синхронізувати зміни до файлу, який Git потім намагається знову відкрити, поки він все ще використовується.
мільйоз

Це рішення неявно використовує публічне репо для критичного системного файлу, що може призвести до проблем із безпекою. Dropbox та інші приватні.
Нова Олександрія

4

Недоцільно розміщувати ціле .bash_profileв Dropbox, або налаштовуючи шляхи Dropbox, або через симпосилання. Різні машини можуть вимагати дещо різного вмісту цього файлу. Приклади: встановлені різні версії програмного забезпечення, що вимагають різної конфігурації, різних шляхів, різних назв для речей, таких як розділи в /dev/.

Зробіть це замість цього: помістіть усі спеціалізовані функції та псевдоніми у файл, $HOME/Dropbox/my_functions.shа потім додайте рядок

. $HOME/Dropbox/my_functions.sh

у вашому .bash_profile.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.