Je possède un profil structurel complexe - avec une foule de scripts en cours d'utilisation. Le principal problème est de démarrer le système sur tous les environnements différents où il est utilisé - Solaris, Linux (matériel divers), HP-UX, AIX...
J'utilise le shell Korn - mais les principes s'appliquent à bash (et fonctionnent bien avec bash) :
#!/bin/ksh
#
# @(#)$Id: profile,v 6.8 2007/09/24 18:20:26 jleffler Exp $
#
# Profil générique pour Jonathan Leffler (JL)
#
# Copyright (C) JLSS 1989-93,1995-99,2002,2005,2007
#TABSTOP=4
# Définir l'environnement spécifique à la machine
mc=`uname -n`
if [ -r $HOME/.$mc ]
then
. $HOME/.$mc
fi
unset mc
# Définir l'environnement de base
: ${INFORMIXDIR:=/usr/informix} ; export INFORMIXDIR
: ${REAL_HOME:=$HOME} ; export REAL_HOME
# Réglage du chemin d'accès configurable par machine
for mcsetpath in ${REAL_HOME}/bin/mcsetpath ${HOME}/bin/mcsetpath
do
if [ -r $mcsetpath ]
then
. $mcsetpath # Définir le chemin d'accès
break;
fi
done
unset mcsetpath
. libpath # Définir LD_LIBRARY_PATH
. ttyset # Définir les valeurs STTY
. kshrc # Définir l'environnement KSH
. cdpath # Définir CDPATH
. exinit # Définir EXINIT
. termset # Définir le type TERM
. ixenviron # Définir l'environnement INFORMIX
. ccenviron # Définir l'environnement ClearCase
. setprompt # Définir l'invite
. manpath # Définir MANPATH
umask 022
# Définir l'environnement spécifique au groupe
group=`id | sed 's/.* gid=[0-9]*(\([^)]*\)).*/\1/'`
if [ -f "$REAL_HOME/.$group" ]
then
. $REAL_HOME/.$group
fi
# Définir l'environnement spécifique à l'utilisateur -- supposer que LOGNAME ou USER est correctement défini
# Attention Linux : par défaut, le nom d'utilisateur = nom de groupe donc les tâches sont effectuées deux fois !
: ${LOGNAME:=${USER:-jleffler}}
export LOGNAME
if [ "$group" != "$LOGNAME" ] && [ -f "$REAL_HOME/.$LOGNAME" ]
then
. $REAL_HOME/.$LOGNAME
else
cd
case "$-" in
*c*) : OK;;
*) echo "Utilisateur $LOGNAME connecté à `pwd` à `date`";;
esac
trap "clear; exit 0" 0
fi
unset group