Une commande externe est un fichier présent dans l'arborescence.
Quand un utilisateur exécute la commande ls, le shell demande au noyau Linux d'exécuter le fichier /bin/ls
Sont considérés comme commandes externes, tous les fichiers au format binaire exécutable ainsi que tous les fichiers au format texte représentant un script de commandes.
La commande file indique le type de données contenues dans un fichier.
$ file /bin/ls
/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped
$ file monscript
monscript: POSIX shell script text executable
L'argument de la commande file est un nom de fichier indiqué en relatif ou en absolu
Une commande interne est intégrée au processus shell.
Elle n'a aucune correspondance avec un fichier sur le disque.
La commande type indique si une commande est interne ou externe.
$ type cd
cd est une primitive du shell
$ type ls
ls est un alias vers « ls --color=auto »
La commande type prend en argument le nom d'une commande. Si cette dernière n'est pas une commande interne, elle est recherchée dans les répertoires indiqués dans la variable PATH
Certaines commandes ont une implémentation interne et externe.
La commande pwd est une commande interne :
$ type pwd
pwd est une primitive du shell
La commande pwd possède également une implémentation externe :
$ ls -l /bin/pwd
-rwxr-xr-x 1 root root 34376 2010-09-21 20:33 /bin/pwd
Pour forcer l'utilisation de la commande externe, il faut indiquer l'emplacement de la commande :
$ /bin/pwd
/home
$ cd /bin
$ ./pwd
/bin