Wie in dieser feinen Antwort erwähnt, haben POSIX-Systeme ein externes binäres cd
zusätzlich zu der eingebauten Shell. Unter OS X 10.8 ist es /usr/bin/cd
. Sie können es nicht wie das eingebaute cd
verwenden da es sofort beendet wird, nachdem es sein eigenes Arbeitsverzeichnis geändert hat. Welchem Zweck dient es?
Akzeptierte Antwort:
Es dient in erster Linie dazu, sicherzustellen, dass die POSIX-Werkzeugkiste sowohl innerhalb als auch außerhalb einer Shell verfügbar ist (siehe die POSIX-Begründung für deren Anforderung).
Für cd
, das ist nicht sehr nützlich, aber beachten Sie, dass cd
ändert Verzeichnisse, hat aber andere Nebenwirkungen:Es gibt einen Exit-Status zurück, der hilft festzustellen, ob Sie in der Lage sind chdir()
in dieses Verzeichnis oder nicht, und gibt eine nützliche Fehlermeldung aus, die erklärt, warum Sie chdir()
nicht ausführen können wenn du es nicht kannst.
Beispiel:
dirs_i_am_able_to_cd_into=$(find . -type d -exec cd {} ; -print)
Ein weiterer möglicher Nebeneffekt ist das automatische Einhängen eines Verzeichnisses.
Auf einigen wenigen Systemen sind die meisten externen Befehle für die eingebauten Standard-Shells als symbolischer Link zu demselben Skript implementiert, das dies tut:
#! /bin/sh -
"${0##*/}" "[email protected]"
Das heißt, starte eine Shell und führe das eingebaute darin aus.
Einige andere Systeme (wie GNU) haben Dienstprogramme als echte ausführbare Befehle, was zu Verwirrung führen kann, wenn das Verhalten von der Shell-integrierten Version abweicht.