So deaktivieren Sie "auto cd" in zsh mit oh-my-zsh

29

Googeln zeigte keine Ergebnisse. Hier ist , was ich meine: Ich habe eine binäre Datei mit dem Namen xin meinem Pfad (nicht die aktuellen Ordner, aber es ist in dem PATH), und auch einen Ordner mit dem gleichen Namen im aktuellen Arbeitsverzeichnis. Wenn ich tippe x, möchte ich, dass die Binärdatei ausgeführt wird, aber stattdessen wird sie in diesen Ordner kopiert. Wie behebe ich das?

Gabi Purcaru
quelle

Antworten:

46

Das sind drei Fragen in einer ;-)

AUTO_CD Option und wie man es findet

Zunächst ist die gesuchte Option AUTO_CD. Sie können es leicht finden, indem Sie nachschlagen man zshoptions. Verwenden Sie die Suchfunktion Ihres Pagers. In der Regel drücken Sie /und geben das Schlüsselwort ein. Mit nspringen Sie zum nächsten Vorkommen. Daraufhin wird Folgendes angezeigt:

[..]
   Changing Directories
       AUTO_CD (-J)
              If  a  command is issued that can't be executed as a normal command, and the command is the name of a directory, perform the cd command to that directory.
[..]

Die Option kann mit deaktiviert werden unsetopt AUTO_CD.

Schalten Sie es richtig aus

Sie verwenden oh-my-zsh, das als beschrieben wird

"Ein Community-basiertes Framework für die Verwaltung Ihrer zsh-Konfiguration" Enthält über 120 optionale Plugins (Rails, Git, OSX, Hub, Capistrano, Brew, Ant, Macports usw.), ...

Als nächstes müssen Sie herausfinden, wie Sie die Optionen gemäß dem Framework aktivieren / deaktivieren.

In der Readme.textile-Datei wird angegeben , dass die bevorzugte Methode zum Aktivieren / Deaktivieren von Plugins ein Eintrag in Ihrer .zshrc-Datei ist: plugins=(git osx ruby) Finden Sie heraus, welches Plugin die AUTO_CD-Option verwendet. Wie aus der Manpage hervorgeht, kann es über den Schalter -J oder AUTO_CD aufgerufen werden. Da oh-my-zsh auf github verfügbar ist, wird bei der Suche nach oh-my-zsh die Datei angezeigt lib/theme-and-appearance.zsh. Wenn Sie nicht das gesamte Plugin " unsetopt AUTO_CDDesign und Darstellung" deaktivieren möchten, fügen Sie ein in Ihre .zshrc-Datei ein. Ändern Sie die Dateien von oh-my-zsh nicht direkt, da Ihre Änderungen verloren gehen, wenn Sie das Framework aktualisieren.

Warum werden ausführbare Dateien nicht direkt aufgerufen?

Ihre dritte Frage ist, wie Sie eine Binärdatei direkt ausführen können: Sie müssen Ihre Binärdatei über einen Pfad ausführen, z. B. mit einem Präfix ./wie in ./do-something. Dies ist eine Art Sicherheitsfunktion und sollte nicht geändert werden. Einstecken eines USB-Sticks, Einhängen und Anschauen mit ls. Wenn es eine ausführbare Datei namens gibt, lsdie Ihr Home-Verzeichnis löscht, ist alles weg, da dies die Reihenfolge Ihres $ PATH überschrieben hätte.

Wenn Sie Befehle haben, die Sie wiederholt aufrufen, ist das Einrichten eines Alias ​​in Ihrer .zshrc-Datei eine häufige Lösung.

Echox
quelle
4
Vielen Dank! Was ich brauchte , war die unsetopt auto_cdLinie (ich habe ausdrücklich erwähnt , dass die ausführbare Datei ist in meinem Weg allerdings, dennoch könnte die Erklärung andere Benutzer helfen , die Dinge herauszufinden).
Gabi Purcaru
Vielen Dank für die gründliche Antwort und die Angabe von Details, wie Sie die Informationen gefunden haben (damit andere in Zukunft selbst solche Informationen finden können).
Trailing Slash
2
Dein letzter Absatz ergibt keinen Sinn. Das OP fragt nach einer Binärdatei in seiner PATHUmgebungsvariablen, die Vorrang vor autocd haben soll. Dies hat nichts mit der Unfähigkeit von Shell-Skripten zu tun, eine ausführbare Datei über einen Pfad auszuführen, ohne entweder ./oder anzugeben /.
Qix
Der erste Link zur Readme funktioniert nicht. Hier ist es. Darüber hinaus hat das OMZ- libVerzeichnis nichts mit pluginsder Frage zu tun, und wie Sie sagten, ist der richtige Befehl unsetopt.
Timo