折腾之心不死

如果你关注本人 blog 比较久的话,你会发现界面又变了~~ 那是因为从用了许久的 octopress 迁移到 hexo 了。

其实很早就把玩过 node.js,当时用的 nvm 来安装的node
瞎折腾,竟是安装到了一个非推荐目录(推荐的目录是~/.nvm),导致使用 hexo 时发生了一些奇异的事:比如,重启 zsh 后执行hexo就提示 zsh: command not found: hexo,又或是执行npm zsh: command not found: npm

nvm如何下载使用就不多说了,本文主要讲述一下如何解决“启动zsh时自动加载node”。

如果你了解 zsh 的话,你应该知道它可以在启动时加载插件 (plugins)。

简而言之就是在 ~/.zshrc 中的 plugins=(foo) 一行,添加上你需要加载的插件。

插件目录一般是: ~/.oh-my-zsh/plugins/<foo>
插件文件名一般是:~/.oh-my-zsh/plugins/<foo>/<foo>.plugin.zsh
如 git ~/.oh-my-zsh/plugins/git/git.plugin.zsh

我们要做的就是在 ~/.oh-my-zsh/plugins 目录下添加一个自己的插件

添加插件 nvm_auto_load

到插件目录下

1
cd ~/.oh-my-zsh/plugins/

创建 nvm_auto_load 目录

1
mkdir nvm_auto_load

将初始化 nvm 写入 nvm_auto_load.plugin.zsh

1
2
3
4
if [ -z "$NVM_DIR" ]; then
NVM_DIR="$HOME/.nvm"
fi
[ -s "$NVM_DIR/nvm.sh" ] && source $NVM_DIR/nvm.sh

修改 ~/.zshrc

在你的原有插件配置中添加nvm_auto_load,如 plugins=(git nvm_auto_load)
如果你的nvm 不是安装在推荐的目录 ~/.nvm,则需要在plugins 配置行之前添加一个 NVM_DIR 的配置

1
export NVM_DIR="/path/to/nvm"

修改后的 .zshrc 完整示例:

1
2
3
4
5
6
7
8
export ZSH=$HOME/.oh-my-zsh
export NVM_DIR=$HOME/.nvm

plugins=(git nvm_auto_load)

export PATH="/usr/bin:/bin:/usr/sbin:/sbin:$PATH"

source $ZSH/oh-my-zsh.sh

修改完记得重启zsh试试~~

添加 ~/.nvmrc

做了上述修改后你会发现 nvm 虽然会被启动时加载进来,但安装过的 node 依然不能被找到

$ nvm current
none
$ node
zsh: command not found: node

只需要在 ~/.nvmrc 中写入你需要的版本即可

1
echo "6.3.1" > ~/.nvmrc

在你下次启动zsh时即可自动加载指定的版本了

$ nvm current
v6.3.1