Le shell distingue deux sortes de commandes :
les commandes internes
les commandes externes.
Une commande interne est une commande dont le code est implanté au sein de l’interpréteur de commande. Cela signifie que, lorsqu’on change de shell courant ou de connexion, par exemple en passant de bash au C-shell, on ne dispose plus des mêmes commandes internes.
Exemples de commandes internes : cd , echo , for , pwd
Sauf dans quelques cas particuliers, l’interpréteur ne crée pas de processus pour exécuter une commande interne.
Les commandes internes de bash peuvent se décomposer en deux groupes :
les commandes simples (ex : cd, echo)
les commandes composées (ex : for, ((, {).
Commandes simples
Parmi l’ensemble des commandes internes, echo est l’une des plus utilisée :
echo :
Cette commande interne affiche ses arguments sur la sortie standard en les séparant par un espace et va à la ligne.
$ echo bonjour tout le monde bonjour tout le monde $
Dans cet exemple, echo est invoquée avec quatre arguments : bonjour, tout, le et monde.
On remarquera que les espacements entre les arguments ne sont pas conservés lors de l’affichage : un seul caractère espace sépare les mots affichés. En effet, le shell prétraite la commande, éliminant les blancs superflus.
Pour conserver les espacements, il suffit d’entourer la chaîne de caractères par une paire de guillemets :
$ echo “bonjour tout le monde” bonjour tout le monde $
On dit que les blancs ont été protégés de l'interprétation du shell.
Pour afficher les arguments sans retour à la ligne, on utilise l’option -n de echo.
$ echo -n bonjour bonjour$
La chaîne d’appel $ est écrite sur la même ligne que l’argument bonjour.
Commandes composées
Les commandes composées de bash sont :
Seuls le premier et le dernier mot de la commande composée sont indiqués. Les commandes composées sont principalement des structures de contrôle.
Une commande externe est une commande dont le code se trouve dans un fichier ordinaire. Le shell crée un processus pour exécuter une commande externe. Parmi l’ensemble des commandes externes que l’on peut trouver dans un système, nous utiliserons principalement les commandes unix (ex : ls, mkdir, cat, sleep) et les fichiers shell.
La localisation du code d'une commande externe doit être connue du shell pour qu'il puisse exécuter cette commande. A cette fin, bash utilise la valeur de sa variable prédéfinie PATH. Celle-ci contient une liste de chemins séparés par le caractère : (ex : /bin:/usr/bin). Par exemple, lorsque l’utilisateur lance la commande unix ps, le shell est en mesure de l’exécuter et d’afficher les processus attachés à la fenêtre courante de l'utilisateur car le code de ps est situé dans le répertoire /usr/bin présent dans PATH.
$ ps PID TTY TIME CMD 4160 pts/2 00:00:00 bash 4207 pts/2 00:00:00 ps $
Remarque : pour connaître le statut d’une commande, on utilise la commande interne type.
$ type –t sleep file => sleep est une commande externe $ type –t echo builtin => echo est une commande interne du shell $