Outils pour utilisateurs

Outils du site


config:env:start

Environnement

La meilleure façon de garder la même configuration pour tous les programmes est de sauvegarder tout ce qui se trouve dans son ${HOME}. Ou au moins tout ce qui correspond à .[0-9a-zA-Z]*.

Mais il risque d'y avoir des fichiers dont nous n'avons que faire.

J'utilise un répertoire qui contient tous mes fichiers de configuration, et un script qui se charge de faire des liens symboliques. Il ne reste plus qu'à sauvegarder ce répertoire et le tour est joué…

L'arborescence de ce répertoire de configuration est la suivante :

bin/    # Répertoire dont le contenu sera lié dans ''${HOME}/bin''
old/    # Pour sauvegarder les anciens fichiers plutôt que les écraser
_bashrc # Sera lié en ''${HOME}/.bashrc
_mutt/  # Sera lié en ''${HOME}/.mutt''
...
mk_conf_links
#!/bin/bash
 
declare PWD=$(pwd)
 
# Variable à modifier selon vos préférences
declare CONF_DIR="${HOME}/conf"
 
if [ ! -d $CONF_DIR ]; then
  echo "You don't have a configuration directory."
  echo "I can't make symlinks !"
  echo "By the way... How are you running this script, uh ?"
  exit 1
fi
 
trap "cd $PWD" 0 1 3 9 15
 
cd $CONF_DIR
 
if [ ! -d old ]; then
  mkdir old
fi
 
declare num=0
 
for conf_file in $(ls -d1 _* | grep -v "^\(\.\)*/$");
do
  file=${HOME}/${conf_file/_/.}
  if [ -L $file ]; then
    rm -f $file
  elif [ -f $file -o -d $file ]; then
    mv $file ${CONF_DIR}/old/${conf_file}
  elif [ ! -e $file ]; then
    echo "$file not found."
  else
    echo "There's something wrong with $file. Do you own it ?"
    exit 2
  fi
  ln -s ${CONF_DIR}/$conf_file $file
  num=$((num + 1))
done
 
if [ ! -d ${HOME}/bin ]; then
  mkdir ${HOME}/bin
fi
 
for file in $(ls ${CONF_DIR}/bin); do
  if [ ! -e ${HOME}/bin/$file ]; then
    ln -s ${CONF_DIR}/bin/$file ${HOME}/bin
    num=$((num + 1))
  fi
done
 
echo "$num configuration files/directory updated."
 
# EoF
config/env/start.txt · Dernière modification: 2012/11/02 10:14 par cyriac