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

Image non trouvée !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.

Image non trouvée !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 !

Image non trouvée !Faîtes très attention à ces commandes, votre serveur peut facilement devenir instable, ou vous pouvez créer des failles de sécurités !