Table des matières

BASH:lecture expliquée des scripts du système

Les scripts de ~/.bashrc

# If not running interactively, don't do anything
case $- in
    *i*) ;; # shell interactif si l'option est présente
      *) return;; # shell non interactif dans tous autres cas
esac
Script qui teste la présence de l'option -i

Explication

Rappel sur la structure "case/esac"

case mot in
         [ modèle [ | modèle ] ... ) suite_de_commandes ;; ] ...
         esac

→ Le shell évalue la valeur de mot puis compare séquentiellement cette valeur à chaque modèle.
→ Dès qu'un modèle correspond à la valeur de mot, la suite_de_commandes associée est exécutée, terminant l'exécution de la commande interne composée case.
suite_de_commandes doit se terminer par deux caractères point-virgule collés, de manière à ce qu’il n’y ait pas d’ambiguïté avec l’enchaînement séquentiel de commandes cmd1 ; cmd2
→ Les mots case et esac sont des mots réservés 1).

Le mot "$-" et la condition "*i*"

Un shell est dit de login si le premier caractère de son argument numéro zéro est un -, ou s'il est invoqué avec l'option -login.

Un shell est interactif si son entrée standard et sa sortie standard sont toutes deux connectées à un terminal (déterminé par la fonction isatty(3)),
ou s'il est invoqué avec l'option -i.

Le paramètre PS1 est positionné, et le paramètre $- contient la lettre i si bash est interactif, ce qui permet à un script ou à un fichier de démarrage de vérifier l'état du shell.~/.bashrc2)

Quand un shell interactif démarre sans être un shell de login, bash lit et exécute les commandes se trouvant dans ~/.bashrc s'il existe.
Quand un shell interactif démarre sans être un shell de login, bash lit et exécute les commandes se trouvant dans ~/.bashrc s'il existe

Le fichier ~/bashrc n'est pas un script

ls -la /home/hypathie/.bashrc
-rw-r--r-- 1 hypathie hypathie 3557 oct.  23 15:59 /home/hypathie/.bashrc
Il n'y a pas les droits d'exécution.

Installation

Utilisation

1)
! case do done elif else esac fi for function if in select then until while { } time [[ ]]
2)
PS1 : La valeur de ce paramètre est développée puis utilisée comme symbole d'accueil principal (voir le paragraphe SYMBOLE D'ACCUEIL ci-dessous). La valeur par défaut est \s-\v\$ .