Wie schalte ich "Auto-Echo" in Bash aus, wenn ich "cd"?

8

Ich weiß nicht, wann dies passiert ist, aber jetzt wird jedes Mal, wenn ich in ein Verzeichnis cd, der Pfad wiedergegeben, bevor die Verzeichnisse geändert werden. Dies geschieht, wenn ich mich bei einem Server anmelde, aber nicht auf meinem lokalen Computer. Auf dem Server wird Linux ausgeführt. Auf meinem lokalen Computer wird Mac OS X ausgeführt.

Ich suchte bei Google und schaute auf die Bash-Manpage, konnte aber nichts finden. Mein .bashrc / .bash_profile hat nichts mit 'cd' zu tun (von dem ich weiß).

Wie ändere ich diese "Funktion"?

Avery Chan
quelle

Antworten:

14

Die Shell wird automatisch wiedergegeben, da CDPATH als Umgebungsvariable definiert ist. Wenn Sie CDPATH deaktivieren, wird das Standard-CD-Verhalten erneut angezeigt.

Avery Chan
quelle
VIELEN DANK. Ich habe Stunden damit verbracht herauszufinden, warum ein Java-Programm, das von einem node.js-Skript aufgerufen wurde, nicht ausgeführt wurde. Es stellte sich heraus, dass es dort irgendwo ein Shell-Skript gab und da mein CDPATH in mein Profil exportiert wurde, wurde die Ausgabe $(cd directory && pwd)ausgedruckt /path/to/directory /path/to/directory.
Igor Zevaka
@ DaveParillo fyi, Link ist unterbrochen
MTK
4

Die obige Antwort, die darauf hindeutet, CDPATH zu deaktivieren, ist wahrscheinlich die beste. Wenn Sie jedoch möchten, dass CDPATH während des Betriebs aktiv bleibt cd, können Sie in Ihren Skripten auch Folgendes verwenden:

cd /path/to/wherever > /dev/null

Marcel Egloff
quelle
2

Eine andere Möglichkeit besteht darin, das eingebaute Element cdmit einer Bash-Funktion dauerhafter zu überschreiben . Ich habe festgestellt, dass so etwas effektiv ist, wenn es in Ihrer ~/.profile(oder einer ähnlichen) Datei abgelegt wird:

function cd() {
    if [ -z "$*" ]; then 
        destination=~
    else
        destination=$*
    fi
    builtin cd "${destination}" >/dev/null && ls
}
  • Dadurch bleibt die Verwendung von cd ohne Argumente erhalten , um zu Ihrem Home-Verzeichnis zurückzukehren.
  • Der >/dev/nullist für das Verschlucken des wiedergegebenen Ordnernamens verantwortlich. (Durch das Echo des Ordnernamens werden Skripte unterbrochen, FOO=$(cd $SOMEVAR && pwd)mit denen ein vollständiger Pfad zu einer Variablen gespeichert wird.)
  • Und schlussendlich; Wie geschrieben führt diese Funktion lsnach dem Wechseln der Verzeichnisse eine automatische Ausführung durch. (Entfernen Sie das && ls, um das zu stoppen.)
beporter
quelle