Memindahkan .bash_profile ke Dropbox

9

Saya ingin memindahkan .bash_profile ke Dropbox agar fungsi Terminal kustom saya tersedia di semua Mac saya. Apakah ini mungkin dan apakah ada implikasi yang mungkin?

Sebagai contoh, saya memiliki perintah untuk melakukan git add dan commit dalam sekali jalan:

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

Saya tidak dapat menemukan informasi tentang ini.

bersumpah
sumber
2
Saya tahu Anda sudah mendapat jawaban, tetapi itu membuat saya berpikir tentang hanya softlinking ke dropbox .bash_profile. Sesuatu untuk dipikirkan.
JMY1000
@ JMY1000 dengan solusi saya, Anda dapat menempatkan hal-hal tambahan tergantung pada mesin yang Anda gunakan - cukup masukkan perintah setelah ifpernyataan. Tapi Anda benar ini juga bisa menjadi symlink.
Mateusz Szlosek
2
ln -s ~/path/to/dropbox/bash_profile_file ~/.bash_profile
2426021684

Jawaban:

18

Anda dapat memiliki file tambahan di folder Dropbox dan kemudian pada setiap mesin di dalam .bash_profilefile Anda, letakkan ini:

FILE="/path/to/DropboxFolder/shared_bash_profile_file"
if [ -f $FILE ];
then
    source $FILE
fi
Mateusz Szlosek
sumber
5
Karena FILE dapat digunakan untuk aplikasi lain dan semacamnya, Anda malam ingin memberi nama variabel seperti "DROPBOX-RC"
grepsedawk
4

Saya pikir lebih baik mengunggah ke repositori. Biarkan saya memberi tahu Anda bagaimana saya melakukannya.

Saya versi seluruh ~/bindirektori. My .bash_profileada di direktori itu. The $HOME/.bash_profileadalah link ke ~/bin/.bash_profile.

.bash_profilePenampilan saya seperti ini:

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

Dengan begitu saya bisa melacak perubahan dengan mudah.

Untuk menjaga pembaruan repo, Anda dapat membuat skrip cron atau LaunchAgents yang menarik perubahan pada ~/bindirektori Anda sekali sehari:

cd ~/bin && git pull origin $(git name-rev --name-only HEAD)
jherran
sumber
2
Keuntungan apa yang akan didapat dari solusi sederhana yang dihadirkan Mateusz?
swelet
2
@welet dari sudut pandang saya, dua keuntungan utama: Anda dapat dengan mudah mengembalikan perubahan ke titik dan Anda dapat melacak setiap perubahan.
jherran
@jherran Atau Anda bisa meletakkan git repo di folder Dropbox juga. Saya pikir meskipun Dropbox memiliki beberapa versi sendiri.
pydsigner
2
@pydsigner Saya mengalami masalah dengan repo Git di Dropbox. Saya menduga kondisi balapan saat Dropbox berupaya menyinkronkan perubahan ke file yang kemudian Git coba buka kembali saat masih digunakan.
milimoose
Solusi ini secara implisit menggunakan repo publik untuk file sistem kritis, yang dapat menyebabkan masalah keamanan. Dropbox dan lainnya bersifat pribadi.
New Alexandria
4

Ini bukan ide yang baik untuk meletakkan keseluruhan .bash_profiledi Dropbox, baik dengan mengubah jalur Dropbox atau melalui symlink. Mesin yang berbeda mungkin memerlukan konten yang sedikit berbeda dari file ini. Contoh: berbagai versi perangkat lunak yang diinstal memerlukan konfigurasi yang berbeda, jalur yang berbeda, nama yang berbeda untuk hal-hal seperti partisi di bawah /dev/.

Lakukan ini sebagai gantinya: letakkan semua fungsi dan alias khusus Anda di dalam file $HOME/Dropbox/my_functions.shdan kemudian sertakan barisnya

. $HOME/Dropbox/my_functions.sh

di Anda .bash_profile.

Federico Poloni
sumber