Annexes shell
Paramètres du shell
Le shell sh peut recevoir des paramètres, voici des exemples:
sh -n nom_fichier, interprète les commandes sans les exécuter
sh -v nom_fichier, imprime les lignes comme elles sont lues
sh -x nom_fichier, imprime les lignes comme elles sont interprétées
Script lancé automatiquement après connexion
Un shell est souvent déclaré dans le fichier /etc/passwd. Ceci permetant à un utilisateur qui se connecte de pouvoir faire quelque chose !
Lorsque le shell est chargé, il exécute un script dit "script système" se trouvant sous /etc. Ce script se nommera: profile
Seuls les shells
dit "shell login" exécutent le fichier /etc/profile (cas d'une
connexion à un terminal). Dans le cas de X-Window, ce fichier ne sera
donc exécuté qu'une fois, lors du lancement de la session. Donc
chaque lancement d'un console sous X Window ne rechargera pas le fichier /etc/profile
! Pour forcer le lancement, il faut indiquer à la commande xterm l'option
-ls.
Dans ce fichier script, vous retrouverez la définition des variables d'environnement globales et les programmes initialisant la connexion propre à chaque machine Unix.
C'est par exemple dedans que l'on retrouve généralement la définition de la variable PS1 permettant d'afficher le $ ou le # devant la ligne de saisie d'un commande voir plus avec par exemple le chemin courant. Voici un extrait:
if [ "$LOGNAME" = "root" ]
then
PS1="`hostname` "'$LOGNAME $PWD '"
#"
else
PS1="`hostname` "'$LOGNAME $PWD '"
$"
fi
Vous pouvez aussi trouver le fichier .bascrc sous /etc si vous utiliser le shell bash. C'est dans ce fichier que l'on configure les variables d'environnement et les fonctions systèmes, ...
Le shell peut ensuite lancer un script personnalisable par profile. Chaque profile ou utilisateur pourra donc lancer automatiquement des traitements personnels suite à sa connexion, mais aussi déclarer des variables d'environnement personnelles. On peut trouver parfois des alias (comme celui le plus fréquent: alias ll='ls -la')...bien que généralement ce genre de déclaration devrait se faire dans un autre fichier (.kshrc, .bashrc ou .cshrc vues plus loin).
Ces fichiers portent un nom différent suivant le shell exécuté:
Sous c-shell
Il suffit de créer un fichier nommé .login dans le répertoire par défaut du profile.
Sous Korn shell ou Bourne shell
Le fichier se nommera .profile et se trouvera dans le répertoire par défaut du profile.
Sous bash
Le fichier se nommera .bash_profile là aussi sous le répertoire par défaut de l'utilisateur.
N'oubliez pas de
rendre exécutable vos scripts via chmod u+x nom_fichier...
.kshrc, .bashrc ou .cshrc
Le shell peut aussi lancer un autre fichier configurable par profile (donc présent aussi dans le répertoire de l'utilisateur):
Ce fichier se nomme .kshrc (pour le korn shell ou le bourn shell), .bashrc (pour bash) ou .cshrc (en c-shell) et permet de définir les variables d'environnements, les alias ou les fonctions spécifiques à un utilisateur.
Avec le korn-shell, il est possible d'avoir une historisation des commandes et surtout de les réediter...
Cette option se fait généralement dans le fichier .kshrc en indiquant un nom d'éditeur à utiliser (on pourra aussi le retrouver très rarement sous .profile)
Pour indiquer le nom de l'editeur vi par exemple:
set -o vi
Pour utiliser ensuite vi lorsque vous tapez votre commande, et bien c'est comme ci vous étiez sous vi, pour mémoire quelques commandes:
- ESC k pour remonter d'une ligne,
- ESC j pour descendre,
- ESC l pour aller à droite,
- ESC h pour aller à gauche,
- ESC r pour remplacer un caractère,
- ESC x pour effacer un caractère
...
Remarque : vous pouvez utiliser emacs aussi !
Les scripts
Pour éditer un script, vous pourrez utiliser n'importe quel éditeur (par défaut, vi)
Pour exécuter un script, vous pourrez:
- taper sh nom_script, (sh ou le nom de votre shell: ksh,
bash, ...)
- ou rendre le fichier exécutable (chmod u+x nom_fichier) puis taper
le nom du fichier
Pour être certain que votre fichier sera exécuté par exemple dans un Bourne Shell, le fichier pourra commencer par #!/bin/sh (Cf. Le fichier équivalent sous ksh).
Les commandes d'administration
Cela touche à la sécurité du système, donc voir le chapitre correspondant !
Faîtes
très attention à ces commandes, votre serveur peut facilement
devenir instable, ou vous pouvez créer des failles de sécurités
!