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.

Était-ce utile?

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

J'ai déjà utilisé le contrôle de version pour cela ( svn , mercurial , etc ...). Vous pouvez configurer votre propre serveur ou utiliser un serveur hébergé. Dropbox fonctionne également.

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top