personnalisation du korn shell: fichier .kshrc

Creation: 6 avril 2009
Mise à jour:
Version: 1.1
Author: Jean-Louis Bicquelet-Salaün
Location: http://jlbicquelet.free.fr
Copyright: (c) 2009 Jean-Louis BICQUELET-SALAÜN

description de .kshrc

Le fichier $HOME/.kshrc est un shell script qui personnalise l'environnement du Korn-shell. Il contient des variables d'environnement, des alias de commandes et des fonctions qui vont personnaliser l'environnement de l'utilisateur.

Chaque fois que vous demarrez une nouvelle instance d'un korn shell, ksh examine la valeur de la variable ENV qui a éventuellement été mise dans le fichier .profile. Si le fichier sur lequel pointe cette variable est exécutable, il l'execute. Par convention, le nom du fichier est .kshrc, mais vous pouvez choisir le nom que vous voulez. Par contre ce fichier ne doit pas afficher de sortie (pas de echo,print ou call), ni appeler des scripts qui en font.

exemple de .kshrc

Voici un exemple de fichier .kshrc definissant des alias et en particulier la commande cls, ainsi qu'une fonction calc permettant de faire des opérations.

On remarquera aussi un systeme de mémorisation des repertoires à l'aide d'une pile.


#--------------------------------------------------------
# functions to implement a simple manual directory stack
#--------------------------------------------------------
dirindex=0
push()
{
dirindex=$((dirindex+1))
dirstack[$dirindex]=$PWD
}

pop()
{
if [ $dirindex -eq 0 ]
then
        echo stack empty
else
        cd ${dirstack[$dirindex]}
        dirindex=$((dirindex-1))
fi
}

dirs()
{
n=dirindex+1
while (( (n=n-1) > 0 ))
do
  echo "$n -> ${dirstack[$n]} "
done
}

go()
{
if [[ $1 -gt 0  &&  $1 -le $dirindex ]]
then
        cd ${dirstack[$1]}
fi
}

dirsave()
{
echo "" > $HOME/.dirs
n=dirindex+1
while (( (n=n-1) > 0 ))
do
  echo "${dirstack[$n]}" >> $HOME/.dirs
done
}

dirload()
{
  dirindex=0
  cat $HOME/.dirs |while read i
  do
   dirindex=$((dirindex+1))
   dirstack[$dirindex]=$i
  done
}

dirdel()
{
n=$1
while (( (n=n+1) < dirindex ))
do
  dirstack[$n-1]=${dirstack[$n]}
done

unset dirstack[$dirindex]
dirindex=$dirindex-1
}


dirclear ()
{
n=dirindex+1
while (( (n=n-1) > 0 ))
do
  unset dirstack[$n]
done
dirindex=0

}