Comme indiqué dans cette bonne réponse, les systèmes POSIX ont un binaire externe cd
en plus du shell intégré. Sur OS X 10.8, c'est /usr/bin/cd
. Vous ne pouvez pas l'utiliser comme le cd
intégré puisqu'il se ferme immédiatement après avoir changé son propre répertoire de travail. À quoi ça sert ?
Réponse acceptée :
Il sert principalement à s'assurer que le coffre à outils POSIX est disponible à la fois à l'intérieur et à l'extérieur d'un shell (voir la justification POSIX pour les exiger).
Pour cd
, ce n'est pas très utile mais notez que cd
change de répertoires mais a d'autres effets secondaires :il renvoie un état de sortie qui aide à déterminer si vous pouvez chdir()
à ce répertoire ou non, et affiche un message d'erreur utile expliquant pourquoi vous ne pouvez pas chdir()
quand vous ne pouvez pas.
Exemple :
dirs_i_am_able_to_cd_into=$(find . -type d -exec cd {} ; -print)
Un autre effet secondaire potentiel est le montage automatique d'un répertoire.
Sur quelques systèmes, la plupart des commandes externes pour les commandes intégrées standard du shell sont implémentées sous la forme d'un lien symbolique vers le même script :
#! /bin/sh -
"${0##*/}" "[email protected]"
C'est-à-dire démarrer un shell et exécuter la fonction intégrée dedans.
Certains autres systèmes (comme GNU), ont des utilitaires comme de véritables commandes exécutables qui peuvent entraîner des confusions lorsque le comportement diffère de la version intégrée du shell.