Переміщення .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.