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.