Jak wyłączyć „auto cd” w zsh za pomocą oh-my-zsh

29

Googlowanie nie pokazało żadnych wyników. Oto, co mam na myśli: mam plik binarny o nazwie xna mojej ścieżce (nie w bieżącym folderze, ale znajduje się w PATH), a także folder o tej samej nazwie w bieżącym katalogu roboczym. Jeśli piszę x, chcę, aby plik binarny był wykonywany, ale zamiast tego jest zapisywany na dysku CD w tym folderze. Jak to naprawić?

Gabi Purcaru
źródło

Odpowiedzi:

46

To trzy pytania w jednym ;-)

AUTO_CD Opcja i jak ją znaleźć

Przede wszystkim szukasz opcji AUTO_CD. Możesz go łatwo znaleźć, patrząc w górę man zshoptions. Użyj funkcji wyszukiwania na pagerach, zwykle naciskasz /i wpisujesz słowo kluczowe. Z ntobą skacz do następnego zdarzenia. Pojawi się następujące:

[..]
   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.
[..]

Opcję można wyłączyć za pomocą unsetopt AUTO_CD.

Prawidłowe wyłączenie

Używasz oh-my-zsh, który jest opisany jako

„Środowisko oparte na społeczności do zarządzania konfiguracją zsh” Obejmuje ponad 120 opcjonalnych wtyczek (rails, git, OSX, hub, capistrano, brew, ant, macports itp.), ...

Następną rzeczą jest ustalenie, jak włączyć / wyłączyć opcje zgodnie z ramami.

Plik readme.textile stwierdza, że ​​preferowanym sposobem włączania / wyłączania wtyczek byłby wpis w pliku .zshrc: plugins=(git osx ruby) Dowiedz się, która wtyczka korzysta z opcji AUTO_CD. Jak odkryto na stronie podręcznika, można go wywołać za pomocą przełącznika -J lub AUTO_CD. Ponieważ oh-my-zsh jest dostępny na github, wyszukiwanie go spowoduje zwiększenie pliku lib/theme-and-appearance.zsh. Jeśli nie chcesz wyłączać całego wyglądu i wyglądu wtyczki, umieść a unsetopt AUTO_CDw swoim .zshrc. Nie modyfikuj bezpośrednio plików oh-my-zsh, ponieważ jeśli aktualizujesz framework, twoje zmiany zostaną utracone.

Dlaczego pliki wykonywalne nie są wywoływane bezpośrednio

Trzecie pytanie dotyczy tego, jak wykonać plik binarny bezpośrednio: plik binarny należy wykonać ścieżką, na przykład z prefiksem ./jak w ./do-something. Jest to rodzaj zabezpieczenia i nie należy go zmieniać. wystarczy podłączyć pamięć USB, zamontować ją i sprawdzić ls. Jeśli istnieje plik wykonywalny o nazwie, lsktóry usuwa katalog domowy, wszystko by zniknęło, ponieważ zastąpiłoby to kolejność twojej $ PATH.

Jeśli masz polecenia, które wywołujesz wielokrotnie, często stosowanym rozwiązaniem jest ustawienie aliasu w pliku .zshrc.

echox
źródło
4
Dziękuję Ci bardzo! Potrzebowałem unsetopt auto_cdlinii (wyraźnie wspomniałem, że plik wykonywalny jest na mojej ścieżce; jednak wyjaśnienie może pomóc innym użytkownikom w zrozumieniu).
Gabi Purcaru
Dziękujemy za dokładną odpowiedź i szczegółowe informacje o tym, jak znalazłeś informacje (pomagając tym samym innym w znalezieniu takich informacji w przyszłości).
końcowe cięcie
2
Twój ostatni akapit nie ma sensu. OP pyta o plik binarny w swojej PATHzmiennej środowiskowej, który chcą mieć pierwszeństwo przed autocd. Nie ma to nic wspólnego z niezdolnością skryptu powłoki do uruchomienia pliku wykonywalnego ze ścieżki bez podania jednego ./lub /.
Qix,
Pierwszy link do pliku Readme nie działa. Oto jest Ponadto libkatalog OMZ nie ma nic pluginswspólnego z. Odnośnie pytania i, jak powiedziałeś, poprawne polecenie to unsetopt.
Timo