Ich schreibe das Problem neu, da es soweit ich weiß, nicht klar verstanden wird. Ich implementiere meine eigene Shell in C, die alle Befehle des Originals unterstützen muss.Wie man Verzeichnis der Exec-Dateien irgendeines Befehls auf Terminal in C erhält?
Das Problem ist, zu ausführen alle vorhandenen UNIX bash Befehle in Cohneexecvp()
oder system()
Funktionen, die Sie bereits lassen, dass leicht tun.
Um dies zu tun, muss ich alle erforderlichen Verzeichnisse durchsuchen, die aus beliebigen UNIX-Befehlen bestehen können. Ich möchte nur wissen:
Kann ich wirklich sicher sein, dass ich alle möglichen UNIX-Befehle in einer beliebigen Distribution unterstützt, wenn ich alle Verzeichnisse in meiner Umgebungsvariablen PATH
überprüft? (die in meiner Maschine /bin/
, /usr/bin/
, /usr/local/bin
wird)
Ich habe auch ein Verfahren, das das vollständige Verzeichnis eine Datei bekommt man realpath() genannt eingesetzte. Aber leider gibt es (null)
, wenn ich versuche, das Verzeichnis des Befehls in meine eigene Shell eingefügt zu bekommen.
Was empfehlen Sie mir, dieses Problem zu erreichen? Als letzte Lösung macht es Sinn, den gesamten Computer rekursiv von der Wurzel aus zu suchen, um den eingegebenen Befehl zu finden?
Wenn etwas unklar ist, bitte lassen Sie mich wissen, um zu klären. Ich wäre Ihnen sehr dankbar, wenn Sie mit einem Beispielcode antworten und das Stichwort in der Frage löschen könnten, wenn Sie meinen, dass es ab sofort klar beschrieben wird.
Vielen Dank im Voraus!
wollen Sie nach Dateien suchen, die mit der 'PATH'-Verzeichnisliste env erreichbar sind. Variable. –
Hinweis: '/ bin' steht in der Systemvariablen' PATH'. –
@ Jean-FrançoisFabre schlagen Sie mir vor, nach dem Inhalt von PATH env zu suchen. Variable? Wenn ja, kann ich sicher sein, dass sich alle möglichen UNIX-Befehle nur in der PATH-Systemvariablen befinden? –