Как отключить «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 была бы распространенным решением.

echox
источник
4
Большое спасибо! Мне нужна была unsetopt auto_cdстрока (я прямо упомянул, что исполняемый файл находится на моем пути; тем не менее, объяснение может помочь другим пользователям разобраться).
Габи Пуркару,
Спасибо за подробный ответ и предоставленную информацию о том, как вы нашли информацию (таким образом, помогая другим найти информацию, подобную этой, в будущем самостоятельно).
завершающий слеш
2
Ваш последний абзац не имеет смысла. ОП спрашивает о двоичном в своей PATHпеременной окружения, которое они хотят иметь приоритет над autocd. Она не имеет ничего общего с неспособностью сценария оболочки, чтобы запустить исполняемый файл с путем без указания либо ./или /.
Qix
Первая ссылка на readme не работает. Вот оно Кроме того, libкаталог pluginsOMZ не имеет никакого отношения к. Относительно вопроса и, как вы сказали, правильная команда unsetopt.
Тимо