# /etc/etckeeper/bashrc # # Ce fragment de shell a vocation a être « sourcé » lors de l'initialisation de # bash. Sous Debian, il suffit d'ajout dans /etc/bash.bashrc : # . /etc/etckeeper/bashrc # # Une fois en place : # * Les variables GIT_AUTHOR_*, utilisé par git pour signer les commits, # seront initialisées en fonction du contenu du ~/.gitconfig ou du login # utilisé pour la connexion. # * La fermeture du shell dans le cas où des modifications de /etc n'ont pas # été enregistré échouera avec un avertissement. # case $- in *i*) # interactive shell check_uncommitted() { if sudo -n etckeeper unclean 2> /dev/null; then echo "Uncommitted changes to /etc found, please commit them" CHECK_UNCOMMITED="done" bash -$- fi } git_export_env() { local ttyuser ttyuserhome conf ttyuser="$(stat -c "%U" $(tty))" ttyuserhome="$(getent passwd "$ttyuser" | cut -d: -f6)" conf="$ttyuserhome/.gitconfig" if [ -z "$GIT_AUTHOR_NAME" ] && [ -z "$GIT_AUTHOR_EMAIL" ]; then if [ ! -z "$GIT_CONFIG_LOCAL" ] || [ ! -z "$GIT_CONFIG" ]; then export GIT_AUTHOR_NAME="$(git config --get user.name)" export GIT_AUTHOR_EMAIL="$(git config --get user.email)" elif [ -r "$conf" ]; then export GIT_AUTHOR_NAME="$(git config --file "$conf" --get user.name)" export GIT_AUTHOR_EMAIL="$(git config --file "$conf" --get user.email)" else export GIT_AUTHOR_NAME="$USER" export GIT_AUTHOR_EMAIL="$USER@$(hostname -f)" fi fi } etckeeper_prompt() { if sudo -n etckeeper unclean 2> /dev/null; then echo -n '(!) ' fi } set_etckeeper_prompt() { PS1="\$(etckeeper_prompt)$PS1" } set_etckeeper_prompt_color() { PS1="\[\e[1;31m\]\$(etckeeper_prompt)$PS1" } if [ "$CHECK_UNCOMMITED" != "done" ]; then trap check_uncommitted EXIT fi git_export_env ;; esac