GNU/Linux >> LINUX-Kenntnisse >  >> Linux

-bash:/bin/cd:Keine solche Datei oder Verzeichnis - automatisch ls nach cd ausführen

Ihr System (wie viele Unix-Systeme) hat keinen externen cd Befehl (zumindest nicht in diesem Pfad). Selbst wenn es eine hätte, die ls würde Ihnen die Verzeichnisliste des ursprünglichen Verzeichnisses geben. Ein externer Befehl kann niemals das Verzeichnis für den aufrufenden Prozess (Ihre Shell) ändern.

Entfernen Sie den Alias ​​mit unalias cd aus der Umgebung (und entfernen Sie auch seine Definition aus allen Shell-Initialisierungsdateien, denen Sie es möglicherweise hinzugefügt haben).

Mit einer Shell-Funktion können Sie es als cd zum Laufen bringen normalerweise mit einem zusätzlichen Aufruf von ls am Ende, wenn die cd erfolgreich:

cd () {
    command cd "[email protected]" && ls -lah
}

oder,

cd () { command cd "[email protected]" && ls -lah; }

Dies würde den cd aufrufen Befehl, der in Ihre Shell integriert ist, mit denselben Befehlszeilenargumenten, die Sie der Funktion gegeben haben. War der Verzeichniswechsel erfolgreich, wird die ls würde Rennen.

Die command Befehl verhindert, dass die Shell die Funktion rekursiv ausführt.

Die Funktionsdefinition (wie oben geschrieben) würde in die Startdatei Ihrer Shell aufgenommen. Mit bash , das könnte ~/.bashrc sein . Die Funktionsdefinition wäre dann in der nächsten neuen interaktiven Shell-Sitzung aktiv . Wenn es jetzt aktiv sein soll , führen Sie dann die Funktionsdefinition unverändert am interaktiven Shell-Prompt aus, wodurch sie in Ihrer aktuellen interaktiven Sitzung definiert wird.

Auf Systemen, auf denen cd als externer Befehl verfügbar ist, ändert dieser Befehl auch nicht das Verzeichnis für den aufrufenden Prozess. Die einzige wirkliche Verwendung für einen solchen Befehl besteht darin, POSIX-Kompatibilität bereitzustellen und als Test zu dienen, ob ein Verzeichniswechsel in ein bestimmtes möglich wäre .


Ich konnte es lösen, indem ich den Alias ​​wieder mit unalias cd entfernte


Das geschah aus folgenden Gründen:

$ type cd

cd is a shell builtin

Linux
  1. So beheben Sie „/usr/bin/dirmngr“:Keine solche Datei oder kein solches Verzeichnis

  2. Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

  3. /usr/bin/ls:/usr/bin/ls:Binärdatei kann nicht ausgeführt werden?

  4. Debian – -bash:/usr/bin/nano:Keine solche Datei oder Verzeichnis?

  5. Linux – Zusammenführen von /usr/bin und /usr/sbin in /bin (gnu/linux)?

/usr/bin vs. /usr/local/bin Unter Linux?

Installieren Sie Binärdateien in /bin, /sbin, /usr/bin und /usr/sbin, Interaktionen mit --prefix und DESTDIR

Wechseln Sie das Verzeichnis und führen Sie die Datei in einem Befehl aus

cp:Verzeichnis kann nicht erstellt werden:Keine solche Datei oder Verzeichnis

Unterschied zwischen /bin und /usr/bin

/bin Inhalt nach /usr/bin verschoben, rückgängig machen möglich?