Comme indiqué dans cette réponse précise, les systèmes POSIX ont un fichier 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 programme intégré cd
car il se ferme immédiatement après la modification de son propre répertoire de travail. A quoi est-ce que ça sert?
cd-command
command
posix
kojiro
la source
la source
/usr/bin/cd
, seulement le shell intégré./bin/cd
cependant./bin/cd
ni/usr/bin/cd
.Réponses:
Cela 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 de POSIX pour les obliger ).
En effet
cd
, ce n’est pas très utile, mais notez que celacd
change de répertoire mais qu’il a d’autres effets secondaires: il renvoie un état de sortie qui permet de déterminer si vous pouvezchdir()
ou non accéder à ce répertoire et un message d’erreur utile expliquant pourquoi vous ne pouvez pas.chdir()
quand tu ne peux pas.Exemple:
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 du shell standard sont implémentées sous forme de lien symbolique vers le même script qui:
C’est-à-dire démarrer un shell et exécuter le programme intégré.
Certains autres systèmes (comme GNU) utilisent des utilitaires comme véritables commandes exécutables, ce qui peut prêter à confusion lorsque le comportement diffère de la version intégrée du shell.
la source
cd
commande external . Cela pourrait être utile pour surveiller la disponibilité d'un système de fichiers distant montable automatiquement, ou peut-être avant de faire quelque chose de très urgent.Le fait une commande cd non builtin est disponible est essentiellement due à la Posix exigence pour tous les builtins réguliers pour être appelable par les commandes de la famille exec
env
,find
,nice
,nohup
,time
etxargs
combinée au fait certaines de ces commandes ne sont pas eux - mêmes mis en œuvre comme builtins.Cela n'a pas beaucoup de sens,
cd
cependant, le combiner avec ces commandes est totalement inutile. Voici cependant des exemples plus ou moins tenables:la source
break, :, continue, . , eval, exec, exit, export, readonly, return, set, shift, times, trap, unset
ne seraient pas pertinentes en tant que commandes externes alors qu'ilcd
s'agit d'une commande standard qui a quelques cas d'utilisation documentés en tant que commande.En plus de vérifier si un chemin correspond à un répertoire accessible, l'
cd
exécutable traitera et utilisera laCDPATH
variable et imprimera le chemin absolu du répertoire résolu s'il a été utilisé avec succès.Ceci n'est utile que très occasionnellement, mais éviterait de réimplémenter la même logique pour la recherche de répertoires correspondants. Un cas d'utilisation concret consiste à trouver le premier répertoire existant d'un nom particulier sous plusieurs parents possibles.
cd
processus égalementOLDPWD
pourcd -
, mais cela est moins concret puisque la variable d'environnement serait déjà disponible.la source