(oh-my-) zsh поведение: `$ command_name` в домашнем каталоге приводит к эффекту` cd command_name` - PullRequest
0 голосов
/ 13 октября 2019

В настоящее время я использую zsh с oh-my-zsh, и я столкнулся с раздражающим поведением оболочки.

Я должен был сделать небольшое, но разрушительное изменение в экспорте $PATH при редактированииmy .zshrc, потому что происходит следующее:

В приглашении оболочки, находящемся в ~/, с выдачей, например, команды flutter ...

$ flutter

... приводит к:

$ ~/flutter/ (как будто вызов $ flutter был интерпретирован как $ cd flutter)

Однако, выдав $ flutter в любом другом каталоге, в том числе $ ~/flutter приводит к правильному выполнению команды flutter. То же самое для go и других.

Линия 2 на моем .zshrc экспорте $PATH следующим образом:

export PATH=$HOME/bin:$HOME/.emacs.d:$HOME/flutter/bin/cache/dart-sdk:$HOME/flutter/bin/cache/dart-sdk/bin:$HOME/.pub-cache/bin:$HOME/.composer/vendor/bin:$HOME/.cargo/env:$HOME/.platformio/penv/bin:$HOME/flutter/bin:$PATH

I 'Я сравнивал .zshrc версии с другими резервными копиями, и я могу что-то упустить, но различий не обнаружено.

Что, по вашему мнению, не так?

Если вы сталкивались с этимдосада, как ты это исправил?

1 Ответ

0 голосов
/ 14 октября 2019

Объяснение

Эта функция называется AUTO_CD.

AUTO_CD (-J)

Если выдана команда, которая не может быть выполненакак обычная команда, а команда является именем каталога, выполните команду cd для этого каталога.

http://zsh.sourceforge.net/Doc/Release/Options.html#Changing-Directories

AUTO_CD включается в файле oh-my-zsh oh-my-zsh/lib/theme-and-appearance.zsh.

...

setopt auto_cd
setopt multios
setopt prompt_subst

[[ -n "$WINDOW" ]] && SCREEN_NO="%B$WINDOW%b " || SCREEN_NO=""
...

Решение

Добавьте следующую команду в ~/.zshrc после загрузки oh-my-zsh, чтобы отключить эту функцию.

unsetopt AUTO_CD
...