Commandes de l'interpréteur de commandes Bourne

Vous pouvez exécuter des commandes dans l'interpréteur de commandes Bourne.

Lorsque vous exécutez une commande dans l'interpréteur de commandes Bourne, celui-ci évalue d'abord la commande et effectue toutes les substitutions indiquées. Il exécute ensuite la commande à condition que :
  • Le nom de la commande soit une commande intégrée spéciale de l'interpréteur de commandes Bourne.

    OR

  • Le nom de la commande correspond au nom d'une fonction définie. Si tel est le cas, l'interpréteur de commandes définit les paramètres positionnels aux paramètres de la fonction.
Si le nom de la commande ne correspond ni à une commande intégrée ni au nom d'une fonction définie et que la commande nomme un fichier exécutable qui est un programme compilé (binaire), l'interpréteur de commandes (le parent) crée un nouveau processus (l'enfant) qui exécute immédiatement le programme. Si le fichier est un exécutable marqué mais qu'il ne s'agit pas d'un programme compilé, l'interpréteur de commandes suppose qu'il s'agit d'une procédure de shell. Dans ce cas, l'interpréteur de commandes crée une autre instance de lui-même (un sous-interpréteur de commandes), pour lire le fichier et exécuter les commandes qui y sont incluses. L'interpréteur de commandes exécute également une commande entre parenthèses dans une sous-interpréteur de commandes. Pour l'utilisateur, un programme compilé est exécuté exactement de la même manière qu'une procédure de shell. L'interpréteur de commandes recherche normalement les commandes dans les répertoires du système de fichiers dans cet ordre :
  1. /usr/bin
  2. /etc
  3. /usr/sbin
  4. /usr/ucb
  5. $HOME/bin
  6. /usr/bin/X11
  7. /sbin
  8. Répertoire de travail
L'interpréteur de commandes recherche chaque répertoire, l'un après l'autre, puis passe au répertoire suivant s'il ne parvient pas à trouver la commande.
Remarque: La variable CHEMIN détermine l'ordre dans lequel le shell recherche les répertoires. Vous pouvez modifier la séquence particulière des répertoires recherchés en redéfinissant la variable CHEMIN.

Si vous indiquez un nom de chemin spécifique lorsque vous exécutez une commande (par exemple, /usr/bin/sort), l'interpréteur de commandes ne recherche aucun autre répertoire que celui que vous spécifiez. Si le nom de la commande contient une barre oblique (/), l'interpréteur de commandes n'utilise pas le chemin de recherche.

Vous pouvez indiquer un nom de chemin complet commençant par le répertoire racine (tel que /usr/bin/sort). Vous pouvez également indiquer un nom de chemin relatif au répertoire en cours. Si vous spécifiez, par exemple :
bin/myfile
l'interpréteur de commandes recherche dans le répertoire en cours un répertoire nommé bin et dans ce répertoire, le fichier myfile.
Remarque: Le shell à accès restreint n'exécute pas de commandes contenant une barre oblique (/).

L'interpréteur de commandes se souvient de l'emplacement dans le chemin de recherche de chaque commande exécutée (pour éviter d'avoir à utiliser inutilement des commandes exec par la suite). S'il trouve la commande dans un répertoire relatif (dont le nom ne commence pas par /), l'interpréteur de commandes doit déterminer à nouveau l'emplacement de la commande chaque fois que le répertoire en cours change. L'interpréteur de commandes oublie tous les emplacements mémorisés chaque fois que vous modifiez la variable CHEMIN ou exécutez la commande hash -r.