Garder les configurations de shell synchronisées sur plusieurs machines
-
03-07-2019 - |
Question
Je suis un utilisateur très actif de la ligne de commande et j'ai des comptes shell partout. MacBooks, machines de bureau Linux, serveurs Linux, Cygwin sur XP, vous l'appelez.
Comment puis-je garder la configuration de mon shell ( .bashrc
, .vimrc
etc.) synchronisée sur toutes ces machines à l'aide des outils limités disponibles sur toutes les plateformes?
J'utilise rsync
de manière assez limitée, ce qui implique de copier manuellement certains fichiers lorsque j'en ai besoin, mais je souhaite un moyen standard de configurer le même environnement shell de base sur toutes mes machines. . Dis-moi ta stratégie de gestion de compte shell.
La solution
J'ai un dossier sur Dropbox avec des configurations globales, par système d'exploitation et par shell d'ordinateur:
$ ls ~/Dropbox/shell/bash
bashbootstrap bashrc
bashrc-Darwin bashrc-Darwin-laptopname bashrc-Darwin-mininame
bashrc-Linux bashrc-Linux-machineone bashrc-Linux-machinetwo
bashrc
est chargé sur chaque machine, bashrc-Linux
, bashrc-Darwin
sont chargés sur leurs systèmes d'exploitation respectifs et plusieurs configs sont spécifiques. aux machines individuelles. (Au fait, Darwin est le nom du noyau de type BSD d’OS X.)
Ce qui lie tout cela est le fichier bashbootstrap
. Il charge chaque fichier de configuration applicable par ordre de spécificité croissante, ce qui permet une priorité plus élevée par système et par machine. De plus, nous ignorons silencieusement les fichiers de configuration manquants; vous n'avez pas besoin de créer des fichiers de configuration vides pour chacune de vos machines pour que le script reste heureux.
Sur une nouvelle machine, après avoir installé Dropbox sous ~ / Dropbox
, je supprime le .bashrc
par défaut et je mets simplement un lien symbolique au fichier d'amorçage à sa place:
$ mv ~/.bashrc ~/.bashrc.bak
$ ln -s ~/Dropbox/shell/bash/bashbootstrap ~/.bashrc
Oh, et voici le contenu du fichier bashbootstrap
:
if [ -z "$PS1" ]; then
return
fi
dropboxshelldir=~/Dropbox/shell
dropboxdir=$dropboxshelldir/bash
masterbashrc=$dropboxdir/bashrc
osbashrc=$masterbashrc-`uname`
localbashrc=$osbashrc-`hostname | cut -d. -f1`
echo -n "Applicable shell configs: "
for bashfile in "$masterbashrc" "$osbashrc" "$localbashrc"; do
if [ -r $bashfile ]; then
. $bashfile
echo -n "`basename $bashfile` "
fi
done
echo
# Set convenience aliases
myed=${VISUAL:-${EDITOR:-vim}}
alias editbashrc="$myed $masterbashrc"
alias editosbashrc="$myed $osbashrc"
alias editlocalbashrc="$myed $localbashrc"
Une dernière remarque, ce script fournit également trois alias pratiques permettant d’éditer vos fichiers de configuration Bash sans avoir à vous rappeler où ils sont stockés.
-
editbashrc
: Modifiez le fichier de configuration global. -
editosbashrc
: Modifiez le fichier de configuration spécifique au système d'exploitation. -
editlocalbashrc
: Modifiez le fichier de configuration spécifique à l'ordinateur.
Je n’ai testé cela que sur Bash, mais cela pourrait fonctionner sur d’autres Bash, comme des obus. Mais, comme on dit, votre kilométrage peut varier.
J'ai publié un article sur ce ici . .
Autres conseils
Si vous avez accès au contrôle de source, je les archiverai simplement. De cette manière, vous pourrez les synchroniser sur plusieurs machines et vous pourrez les comparer ou les restaurer au besoin. Si vous n’avez pas CVS / SVN au travail, des options gratuites sont disponibles.