Як відключити "auto cd" в zsh за допомогою oh-my-zsh


29

Погугливши це, результати не показали. Ось що я маю на увазі: xу мене на своєму шляху вказаний бінарний файл (не поточна папка, але він знаходиться в PATH), а також папка з тим самим іменем у поточному робочому каталозі. Якщо я набираю x, я хочу, щоб двійковий файл виконувався, але замість цього він знаходиться в цій папці. Як це виправити?

Відповіді:


46

Ось три питання в одному ;-)

AUTO_CD Варіант і як його знайти

Перш за все, ви шукаєте варіант AUTO_CD. Ви можете легко знайти його, піднявши голову man zshoptions. Використовуйте функцію пошуку пейджерів, зазвичай ви натискаєте /та вводите ключове слово. З nвами переходите до наступного явища. Це призведе до наступного:

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

Опцію можна скасувати за допомогою unsetopt AUTO_CD.

Вимкнення його належним чином

Ви використовуєте oh-my-zsh, який описується як

"Рамка, керована спільнотою для управління вашою конфігурацією zsh", включає 120+ додаткових плагінів (рейли, git, OSX, хаб, capistrano, brew, мураха, макпорти тощо), ...

Отже, наступне - дізнатися, як увімкнути / вимкнути параметри відповідно до рамки.

Файл readme.textile зазначає, що кращим способом увімкнення / відключення плагінів буде запис у вашому .zshrc: plugins=(git osx ruby) Дізнайтеся, який плагін використовує параметр AUTO_CD. Як виявлено на сторінці сторінки, її можна викликати через перемикач -J або AUTO_CD. Оскільки oh-my-zsh доступний у github, пошук його призведе до пошуку файлу lib/theme-and-appearance.zsh. Якщо ви не хочете вимкнути весь плагін "тема та зовнішній вигляд", поставте unsetopt AUTO_CDсвій .zshrc. Не змінюйте файли oh-my-zsh безпосередньо, оскільки у випадку оновлення фреймворку ваші зміни будуть втрачені.

Чому виконувані файли не викликаються безпосередньо

Ваше третє питання - як безпосередньо виконати бінарний файл: Ви повинні виконати свій двійковий файл через шлях, наприклад, з префіксом ./як у ./do-something. Це якась функція захисту, і її не слід змінювати. за допомогою підключення USB-накопичувача, його монтажу та ознайомлення з ним ls. Якщо є виконуваний файл, lsякий видаляє ваш домашній каталог, усе б пропало, оскільки це перезаписало б порядок вашої $ PATH.

Якщо у вас є команди, які ви дзвоните неодноразово, встановлення псевдоніма у вашому .zshrc було б поширеним рішенням.


4
Велике спасибі! Що потрібно було unsetopt auto_cdлінія (я явно вказати , що виконуваний файл знаходиться на моєму шляху , хоча, проте, пояснення може допомогти іншим користувачам зрозуміти речі).
Габі Пуркару

Дякуємо за ретельну відповідь та надання детальної інформації про те, як ви знайшли інформацію (тим самим допомагаючи іншим знайти подібну інформацію в майбутньому).
кінцева коса риса

2
Ваш останній абзац не має сенсу. ОП запитує про бінарну PATHзмінну свого середовища, яку вони хочуть мати перевагу над autocd. Це не має нічого спільного з нездатністю скрипта оболонки запустити виконуваний файл із контуру, не вказуючи жодного ./або /.
Qix

Перше посилання на readme не працює. Ось воно. Крім того, у libкаталозі OMZ немає нічого pluginsспільного. Зважаючи на питання, і як ви вже сказали, правильна команда unsetopt.
Тімо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.