NVM не придерживается псевдонима по умолчанию с ZSH (oh-my-zsh)

У меня уже установлен NVM, затем я открыл oh-my-zsh и установил это. Кажется, у него есть nvm-плагин, который я включил в .zshrc.

Также я помещал это в мой .zprofile

export NVM_DIR="/Users/me/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm

Теперь я могу использовать nvm, но всякий раз, когда я устанавливаю псевдоним по-умолчанию для другой версии, nvm переключается обратно при следующем открытии оболочки.

$ iojs -v
v1.2.0
$ which iojs
/Users/me/.nvm/versions/io.js/v1.2.0/bin/iojs
$ nvm use 1.5.1
Now using io.js v1.5.1
$ nvm alias default iojs v1.5.1
default -> iojs (-> iojs-v1.5.1)
$ which iojs
/Users/me/.nvm/versions/io.js/v1.5.1/bin/iojs

Затем после открытия новой оболочки:

$ which iojs
/Users/me/.nvm/versions/io.js/v1.2.0/bin/iojs

Может ли моя старая установка bash как-то повредить вещи? Я на OSX, но думаю, это не имеет значения.

--------- edit ------ Больше результата по запросу

➜  ~  nvm version
iojs-v1.2.0
➜  ~  ls $NVM_DIR/alias
default
➜  ~  cat $NVM_DIR/alias/default
iojs
➜  ~  nvm alias iojs
iojs -> iojs-v1.5 (-> iojs-v1.5.1) (default)
➜  ~  nvm alias $(cat $NVM_DIR/alias/default)
iojs -> iojs-v1.5 (-> iojs-v1.5.1) (default)

Я только выяснил, почему он возвращается к 1.2.0, я думаю. Во время установки oh-my-zsh, похоже, он взял активную PATH из моей оболочки bash и скопировал ее в файл .zshrc, включая активный путь nvm в то время:

/Users/me/.nvm/versions/io.js/v1.2.0/bin

Но после удаления этого из PATH, теперь мой zsh не может найти двоичный файл Node после запуска новой оболочки. Итак, все-таки вопрос в том, что я не знаю, почему не помню настройки NVM? Я все еще могу установить его в активную оболочку, как раньше, она просто не прилипает.

Теперь я думаю, что может быть что-то принципиально неправильное с моей установкой oh-my-zsh. У меня включен плагин git, например, в zshrc, но команда gst не является допустимым псевдонимом.

plugins = (git, gitflow, nvm, brew, tmux)

➜  ~  gst
zsh: command not found: gst

Ответ 1

Теперь у меня это работает. Переустановлен oh-my-zsh.

Я не уверен, что изменилось. Кажется, мне нужно поддерживать плагин nvm для его работы.

Без плагина я попытался поставить команду запуска nvm в .zprofile

export NVM_DIR="/Users/me/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm

Несмотря на то, что файл загружен при создании новой оболочки, он, похоже, не правильно включил NVM.

Также я заметил, что если я ошибаюсь в конфигурации zsh-плагина в .zshrc, ошибок нет, и плагины просто не будут работать. Так что это нужно быть осторожным, я думаю. Например, я случайно использовал запятую, а затем плагины прерывались без предупреждения:

plugins=(git, gitflow, nvm)

Ответ 2

Добавьте ниже до конца .zshrc

export NVM_DIR=~/.nvm
source $(brew --prefix nvm)/nvm.sh

Обратите внимание, что это должно быть в конце, я не знаю, почему

Ответ 3

Я использую OSX 10.11.6 с Hyper и Oh My Zsh. Мне пришлось удалить nvm, который был установлен через homebrew, переустановить его через команду curl, а затем добавить эту строку в самую нижнюю часть, чтобы она работала правильно. Я уверен, что это что-то со всеми моими плагинами/установкой/бла, но это то, что заставило его работать для меня:

source "$NVM_DIR/nvm.sh"

в самом конце моего файла ~/.zshrc

Ответ 4

Это сработало для меня, когда я добавил в ~/.zprofile

export NVM_DIR=~/.nvm
source $(brew --prefix nvm)/nvm.sh

Ответ 5

Если у вас есть эта строка в вашем файле ~/.zshrc

export PATH="/usr/local/opt/[email protected]/bin:$PATH"

удалите эту строку или закомментируйте в файле.

Ответ 6

Как сказано brew при установке nvm, "добавьте следующее в ~/.bash_profile или в нужный файл конфигурации оболочки:"

export NVM_DIR="$HOME/.nvm"
[ -s "$(brew --prefix)/opt/nvm/nvm.sh" ] && . "$(brew --prefix)/opt/nvm/nvm.sh" # This loads nvm
[ -s "$(brew --prefix)/opt/nvm/etc/bash_completion" ] && . "$(brew --prefix)/opt/nvm/etc/bash_completion" # This loads nvm bash_completion

Несмотря на то, что .zprofile является эквивалентом .bash_profile, по какой-то причине псевдонимы игнорируются, если вы добавляете строки в .zprofile. Поэтому добавьте их в .zshrc.

Смотрите https://formulae.brew.sh/formula/nvm, в которой есть последняя версия этих строк.

Если это не сработает... некоторые люди, кажется, добились успеха, добавив что-то в свой путь PATH: https://github.com/nvm-sh/nvm/issues/1703#issuecomment-356221842.