LinuxPedia

Wiki libre et indépendant dédié à GNU-Linux et BSD.

Outils pour utilisateurs

Outils du site


commande:interpreteur_de_commandes

Les interpreteurs de commande (shell)

Les terminaux

Terminal virtuel tty

Un terminal virtuel, /dev/tty* est un termial lancé généralement par le processus init. La plupart du temps, six terminaux virtuels sont lancés automatiquement lors de la séquence de démarrage, via le script /etc/inittab, vous y accédez par le raccourcis <ctrl> + <alt> + <Fn> (Fn correspond aux touche de fonction numérotée du clavier), un autre est lancé par xorg sur F7 et si vous ouvrez plusieurs sessions utilisateur, chacune utilisera le terminal virtuel suivant.

Pour chaque terminal virtuel créé par inittab, le programme login est lancé en attente. Une fois que vous avez rentré votre nom d'utilisateur et son mot de passe, si ceux-ci sont valides, login lance l'interpreteur de commandes.

Tunning tty

Il y a peu de possibilités pour tunner ses terminaux virtuels. Vous pouvez cependant changer le message de login en modifiant le fichier /etc/issue ainsi, au lieu d'afficher:

Bienvenue sur truc
login

Vous pouvez avoir:

erreur système...
Anihilation de l'humanité en cours

Ça fait toujours bien rigoler les potes geek ;)

Vous pouvez aussi modifier le “message of the day”, le message qui va s'afficher après une connexion réussie. Le fichier lu est /etc/motd Sous debian, ce fichier est régénéré à chaque démarrage, il ne sert donc pas à grand chose de le modifier. Il faut mettre ses personnalisations dans /etc/motd.tail

Pseudo-terminal pts

Un pseudo-terminal est une abstraction supplémentaire. On obtient un terminal virtuel par la commande getty ou agetty, qui est une commande administrateur (/sbin/agetty). Pour pouvoir lancer une session terminal sans passer par le noyau, ne pas avoir à se loguer à chaque fois et aussi ne pas dépasser le nombre limité de terminaux virtuels (seulement 64, autant dire que c'est même pas pensable), les emulateurs de terminal utilisent un système de pseudo-terminaux (/dev/pts/).

Chaque pseudo-terminal lance donc directement, avec les droits utilisateur, l'interpréteur de commande. Au final, c'est quand même plus pratique.

Le shell: interpréter les commandes

Le rôle de l'interpreteur de commandes (ou shell) est de lire l'entrée (clavier, fichier, etc), de l'interpreter et si besoin est de lancer une commande. Ou alors d'envoyer une erreur… car les entrées doivent respecter une certaine syntaxe qui peut varier sensiblement d'un interpréteur à l'autre. Autrement dit la syntaxe du shell forme un langage de programmation de haut niveau (un langage de script directement interprété).

Il y en a plusieurs, au nombre desquels les plus utilisés actuellement sont bash, dash et zsh mais pour ne pas me faire incendier par les utilisateur des autres, citons aussi csh, tcsh, ksh et d'autres encore que vous ne m'en voudrez pas de ne pas inventorier.

Alors, quelle différence entre ces différents interpreteurs, pourquoi utiliser l'un plutôt que l'autre, qu'est-ce qui justifie tel ou tel choix pour les distributions?

Origines: sh et POSIX

sh est le shell historique depuis le système unix 7. Ses fonctions de base ont été étendues avec les interpréteur ash puis bash.

ash fut le premier shell unix conforme aux spécification POSIX. La norme POSIX a permit de mettre fin aux aspects les plus néfastes de la guerre des unixes, c'est ce qui a permit de définir une inter-compatibilité des systèmes unix (notamment entre les différents unix commerciaux, bsd et gnu/linux).

Bash : l'interpreteur GNU

Bourne Against SHell a donc été créé pour le compte de la FSF afin d'étendre les fonctionnalités de ash (qui lui-même a été créé pour étendre les fonctionnalités de sh, j'ose à peine imaginer à quoi ressemblera cet article dans 20 ans…)

Dash : l'interpréteur de Debian

Debian Almquist SHell implémente quasiment toutes les fonctionnalité de BASH mais avec de meilleures performances.

Zsh : encore plus de fonctionnalités

Le meilleurs de tous vous diront les utilisateur… Plus léger que bash et plus étendu, il reprend les éléments de plusieurs shells jugés les plus pratiques.

On citera une completion bien plus étendue et la récursivité des commandes. Et un prompt bien geek ;)

Bonus: ipython

À l'origine, python a été créé pour fournir un shell au système d'exploitation néerlandais amoeba. Il permet assez facilement d'injecter des commandes système en bash, avec la bibliothèque os.

ipython est un interpreteur python qui inclue les commandes unix standard sans avoir à faire des dizaines d'import.

commande/interpreteur_de_commandes.txt · Dernière modification : 2018/11/17 12:52 de 127.0.0.1