3.9. Interpréteurs de commandes - “Shells”
Précédent | Chapitre 3. Quelques bases d'UNIX | Suivant

## 3.9. Interpréteurs de commandes - “Shells”

Sous FreeBSD, beaucoup du travail quotidien est effectué sous une interface en ligne de commande appelée interpréteur de commandes ou “shell”. Le rôle principal d'un interpréteur de commandes est de prendre les commandes sur le canal d'entrée et de les exécuter. Beaucoup d'interpréteurs de commandes ont également des fonctions intégrées pour aider dans les tâches quotidiennes comme la gestion de fichiers, le mécanisme de remplacement et d'expansion des jokers (“file globbing”), l'édition de la ligne de commande, les macros commandes, et les variables d'environnement. FreeBSD est fournit avec un ensemble d'interpréteurs de commandes, comme `sh`, l'interpréteur de commandes Bourne, et `tcsh`, l'interpréteur de commandes C-shell amélioré. Beaucoup d'autres interpréteurs de commandes sont disponibles dans le catalogue des logiciels portés, comme `zsh` et `bash`.

Quel interpréteur de commandes utilisez-vous? C'est vraiment une question de goût. Si vous programmez en C vous pourriez vous sentir plus à l'aise avec un interpréteur de commandes proche du C comme `tcsh`. Si vous venez du monde Linux ou que vous êtes nouveau à l'interface en ligne de commande d'UNIX® vous pourriez essayer `bash`. L'idée principale est que chaque interpréteur de commandes à des caractéristiques uniques qui peuvent ou ne peuvent pas fonctionner avec votre environnement de travail préféré, et que vous avez vraiment le choix de l'interpréteur de commandes à utiliser.

Une des caractéristiques communes des interpréteurs de commandes est de pouvoir compléter les noms de fichiers (“filename completion”). En tapant les premières lettres d'une commande ou d'un fichier, vous pouvez habituellement faire compléter automatiquement par l'interpréteur de commandes le reste de la commande ou du nom du fichier en appuyant sur la touche Tab du clavier. Voici un exemple. Supposez que vous avez deux fichiers appelés respectivement `foobar` et `foo.bar`. Vous voulez effacer `foo.bar`. Donc ce que vous devriez taper sur le clavier est: `rm fo[Tab].[Tab]`.

L'interpréteur de commandes devrait afficher `rm foo[BEEP].bar`.

Le [BEEP] est la sonnerie de la console, c'est l'interpréteur de commande indiquant qu'il n'est pas en mesure de compléter totalement le nom du fichier parce qu'il y a plus d'une possibilité. `foobar` et `foo.bar` commencent tous les deux par `fo`, mais il fut capable de compléter jusqu'à `foo`. Si vous tapez `.`, puis appuyez à nouveau sur Tab, l'interpréteur de commandes devrait pouvoir compléter le reste du nom du fichier pour vous.

Une autre caractéristique de l'interpréteur de commandes est l'utilisation de variables d'environnement. Les variables d'environnement sont une paire variable/valeur stockées dans l'espace mémoire d'environnement de l'interpréteur de commandes. Cet espace peut être lu par n'importe quel programme invoqué par l'interpréteur de commandes, et contient ainsi beaucoup d'éléments de configuration des programmes. Voici une liste des variables d'environnement habituelles et ce qu'elles signifient:

Variable | Description
--- | ---
`USER` | Le nom d'utilisateur de la personne actuellement attachée au système.
`PATH` | La liste des répertoires, séparés par deux points, pour la recherche des programmes.
`DISPLAY` | Le nom réseau de l'affichage X11 auquel on peut se connecter, si disponible.
`SHELL` | Le nom de l'interpréteur de commandes actuellement utilisé.
`TERM` | Le nom du type de terminal de l'utilisateur. Utilisé pour déterminer les capacités du terminal.
`TERMCAP` | L'entrée de la base de données des codes d'échappement pour permettre l'exécution de diverses fonctions du terminal.
`OSTYPE` | Type du système d'exploitation, e.g. FreeBSD.
`MACHTYPE` | L'architecture du CPU sur lequel tourne actuellement le système.
`EDITOR` | L'éditeur de texte préferé de l'utilisateur.
`PAGER` | Le visualisateur de page de texte préferré de l'utilisateur.
`MANPATH` | La liste des répertoires, séparés par deux points, pour la recherche des pages de manuel.

Fixer une variable d'environnement diffère légèrement d'un interpréteur de commandes à l'autre. Par exemple, dans le style de l'interpréteur de commandes de type C-shell comme `tcsh` et `csh`, vous utiliseriez `setenv` pour fixer le contenu d'une variable d'environnement. Sous les interpréteurs de commandes Bourne comme `sh` et `bash`, vous utiliseriez `export` pour configurer vos variables d'environnement. Par exemple, pour fixer ou modifier la variable d'environnement `EDITOR`, sous `csh` ou `tcsh` une commande comme la suivante fixera `EDITOR` à `/usr/local/bin/emacs`:

`%` `setenv EDITOR /usr/local/bin/emacs`

Sous les interpréteurs de commandes Bourne:

`%` `export EDITOR="/usr/local/bin/emacs"`

Vous pouvez faire afficher à la plupart des interpréteurs de commandes la variable d'environnement en plaçant un caractère `$` juste devant son nom sur la ligne de commande. Par exemple, `echo $TERM` affichera le contenu de `$TERM`, car l'interpréteur de commande complète `$TERM` et passe la main à `echo`.

Les interpréteurs de commandes traitent beaucoup de caractères spéciaux, appelés métacaractères, en tant que représentation particulière des données. Le plus commun est le caractère `*`, qui représente zéro ou plusieurs caractères dans le nom du fichier. Ces métacaractères spéciaux peuvent être utilisés pour compléter automatiquement le nom des fichiers. Par exemple, taper `echo *` est presque la même chose que taper `ls` parce que l'interpréteur de commandes prendra tous les fichiers qui correspondent à `*` et les passera à `echo` pour les afficher.

Pour éviter que l'interpréteur de commande n'interprète les caractères spéciaux, ils peuvent être neutralisés en ajoutant un caractère antislash (`\`) devant. `echo $TERM` affichera votre type de terminal. `echo \$TERM` affichera `$TERM` tel quel.

### 3.9.1. Changer d'interpréteur de commandes

La méthode la plus simple pour changer votre interpréteur de commandes est d'utiliser la commande `chsh`. En lançant `chsh` vous arriverez dans l'éditeur correspondant à votre variable d'environnement `EDITOR`; si elle n'est pas fixée, cela sera `vi`. Modifiez la ligne “Shell:” en conséquence.

Vous pouvez également passer le paramètre `-s` à `chsh`; cela modifiera votre interpréteur de commandes sans avoir à utiliser un éditeur. Par exemple, si vous vouliez changer votre interpréteur de commandes pour `bash`, ce qui suit devrait faire l'affaire:

`%` `chsh -s /usr/local/bin/bash`

### Note:

L'interpréteur de commandes que vous désirez utiliser doit être présent dans le fichier `/etc/shells`. Si vous avez installé l'interpréteur de commandes à partir du catalogue des logiciels portés, alors cela a dû déjà être fait pour vous. Si vous avez installé à la main l'interpréteur de commandes, vous devez alors le faire.

Par exemple, si vous avez installé `bash` à la main et l'avez placé dans `/usr/local/bin`, vous devrez faire:

`#` `echo "/usr/local/bin/bash" >> /etc/shells`

Puis relancer `chsh`.

Précédent | Niveau supérieur | Suivant
3.8. Daemons, signaux, et comment tuer un processus | Sommaire | 3.10. Editeurs de texte

Ce document, ainsi que d'autres peut être téléchargé sur ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

Pour toutes questions à propos de FreeBSD, lisez la documentation avant de contacter <questions@FreeBSD.org>.
Pour les questions sur cette documentation, contactez <doc@FreeBSD.org>.