Как отключить «Auto CD» в Zsh с помощью Oh-My-Zsh


29

Поиск в Google не дал результатов. Вот что я имею в виду: у меня есть двоичный файл с именем 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 дополнительных плагинов (rails, git, OSX, концентратор, capistrano, brew, ant, macports и т. Д.), ...

Итак, следующая вещь, чтобы узнать, как включить / отключить параметры в соответствии с каркасом.

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

Почему исполняемые файлы не вызываются напрямую

Ваш третий вопрос - как выполнить двоичный файл напрямую: вы должны выполнить свой двоичный файл по пути, например, с префиксом, ./как в ./do-something. Это какая-то функция безопасности и не должна быть изменена. Как подключить USB-накопитель, установить его и посмотреть на него с помощью ls. Если существует исполняемый файл, lsкоторый удаляет ваш домашний каталог, все исчезнет, ​​так как это перезапишет порядок вашего $ PATH.

Если у вас есть команды, которые вы вызываете неоднократно, установка псевдонима в вашем .zshrc была бы распространенным решением.


4
Большое спасибо! Мне нужна была unsetopt auto_cdстрока (я прямо упомянул, что исполняемый файл находится на моем пути; тем не менее, объяснение может помочь другим пользователям разобраться).
Габи Пуркару,

Спасибо за подробный ответ и предоставленную информацию о том, как вы нашли информацию (таким образом, помогая другим найти информацию, подобную этой, в будущем самостоятельно).
завершающий слеш

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

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