Spostamento di .bash_profile su Dropbox


9

Vorrei spostare il mio .bash_profile su Dropbox per avere le mie funzioni Terminale personalizzate disponibili su tutti i miei Mac. È possibile e ci sono possibili implicazioni?

Ad esempio ho un comando per fare un add git e commetterlo in una volta sola:

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

Non sono stato in grado di trovare alcuna informazione al riguardo.


2
So che hai già una risposta, ma mi sta facendo pensare solo al softlink del dropbox .bash_profile. Qualcosa a cui pensare.
JMY1000,

@ JMY1000 con la mia soluzione puoi aggiungere altre cose a seconda della macchina su cui ti trovi - inserisci semplicemente i comandi dopo la ifdichiarazione. Ma hai ragione, questo potrebbe anche essere un collegamento simbolico.
Mateusz Szlosek,

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

Risposte:


18

Puoi avere file aggiuntivi nella cartella Dropbox e poi su ogni macchina all'interno del tuo .bash_profilefile metti questo:

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

5
Poiché FILE potrebbe essere utilizzato per altre app e simili, la notte vorresti nominare la variabile qualcosa come "DROPBOX-RC"
grepsedawk,

4

Penso che sia una buona idea caricare su un repository. Lascia che ti dica come l'ho fatto.

I versione dell'intera ~/bindirectory. Il mio .bash_profileè su quella directory. Il $HOME/.bash_profileè un link a ~/bin/.bash_profile.

Il mio .bash_profileassomiglia a questo:

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

In questo modo posso facilmente tracciare i cambiamenti.

Per mantenere l'aggiornamento del repository, è possibile creare uno script cron o LaunchAgents che tira le modifiche nella ~/bindirectory una volta al giorno:

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

2
Quali vantaggi avrebbe questo rispetto alla semplice soluzione presentata da Mateusz?
Swelet,

2
@swelet dal mio punto di vista, due vantaggi principali: puoi facilmente ripristinare le modifiche in un punto e puoi tenere traccia di ogni modifica.
jherran,

@jherran Oppure potresti mettere il repository git anche nella cartella Dropbox. Penso però che Dropbox abbia un certo controllo delle versioni.
pydsigner,

2
@pydsigner Ho avuto problemi con un repository Git in Dropbox. Sto indovinando le condizioni di gara mentre Dropbox tenta di sincronizzare le modifiche a un file che Git tenta quindi di riaprire mentre è ancora in uso.
millimoose,

Questa soluzione utilizza implicitamente un repository pubblico per un file di sistema critico, che può portare a problemi di sicurezza. Dropbox e altri sono privati.
Nuova Alessandria,

4

Non è una buona idea mettere il tutto .bash_profilein Dropbox, modificando i percorsi di Dropbox o tramite un collegamento simbolico. Macchine diverse potrebbero richiedere un contenuto leggermente diverso di questo file. Esempi: diverse versioni di software installate che richiedono una configurazione diversa, percorsi diversi, nomi diversi per cose come le partizioni sotto /dev/.

Fallo invece: inserisci tutte le tue funzioni e alias personalizzati in un file $HOME/Dropbox/my_functions.she quindi includi la linea

. $HOME/Dropbox/my_functions.sh

nel tuo .bash_profile.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.