Ich versuche, den Pfad grundlegender Befehle wie ls
oder cd
mithilfe which
des Befehls zu finden. Ich sehe den Pfad für, ls
aber nicht für cd
. Natürlich funktionieren beide Befehle einwandfrei. Irgendeine Idee?
$ which ls
/bin/ls
$ which cd
$
Antwort1
cd
ist immer ein integrierter Befehl, der von der Shell selbst bereitgestellt wird. Er wird nicht als externes Dienstprogramm gefunden. Dies ist in keiner Weise spezifisch für Linux.
Von demAbschnitt „APPLICATION USAGE“ für cd
im POSIX-Standard:
Da
cd
dies die aktuelle Shell-Ausführungsumgebung betrifft, wird es immer als reguläre integrierte Shell bereitgestellt. Wenn es in einer Subshell oder einer separaten Dienstprogramm-Ausführungsumgebung aufgerufen wird, beispielsweise in einer der folgenden:
(cd /tmp)
nohup cd
find . -exec cd {} \;
Das Arbeitsverzeichnis der Umgebung des Anrufers wird dadurch nicht beeinflusst.
Den Pfad eines Befehls können Sie portable wie folgt ermitteln command -v
:
bash-4.4$ command -v ls
/bin/ls
bash-4.4$ command -v cd
cd
type
wird etwas ausführlicher sein:
bash-4.4$ type ls
ls is /bin/ls
bash-4.4$ type cd
cd is a shell builtin
Siehe auch "Warum nicht „welches“ verwenden? Was soll man dann verwenden?"