使用nvm $ HOME / nvm / nvm.sh启动nodejs

我使用nvm安装了节点,但它工作正常,但是我需要执行source $HOME/nvm/nvm.sh以获取节点活动

我怎样才能在启动时保持活动状态,因此不需要在每个sssh会话中inputsource $HOME/nvm/nvm.sh

我尝试添加这个命令source $HOME/nvm/nvm.sh/etc/rc.local但是我得到了下面的错误

 > /etc/init.d/node_start.sh: 13: root/nvm/nvm.sh: Bad substitution > /etc/init.d/node_start.sh: 78: root/nvm/nvm.sh: [[: not found > /etc/init.d/node_start.sh: 78: root/nvm/nvm.sh: [[: not found > /etc/init.d/node_start.sh: 129: root/nvm/nvm.sh: [[: not found > /etc/rc.local: 14: /etc/rc.local: source: not found 

但是,如果我在shell上执行该命令,则正常工作

任何帮助是受欢迎的

问候

您应该将下面的行添加到〜/ .bashrc文件的末尾:

 [[ -s /home/$USER/.nvm/nvm.sh ]] && . /home/$USER/.nvm/nvm.sh 

init脚本以root身份运行,而不是您的用户。 如果你想源自己的nvm.sh ,你不应该使用$HOME ,而是使用像/home/vitor/nvm/nvm.sh这样的绝对path。 此外,初始化脚本可能在dash之下运行,所以你不应该使用[[ construct。 只需使用[而不是像这个破折号中描述的/ bin / sh文章

所以我去读了https://github.com/creationix/nvm/blob/master/nvm.sh的nvm.sh源码

我不认为这是与破折号兼容。 所以我build议你在文件系统的其他地方和你的初始化脚本中保留nvm.sh

 exec /bin/bash /root/nvm/nvm.sh 

#!/bin/bash启动node_start.sh也许就足够了。

你也可以在github上订阅问题168,让其他人碰到这个错误。

我希望你的init脚本以#!/bin/sh开始,当它需要以#!/bin/bash开头的时候。 当然,在Bash中编写init脚本可能有很多很好的理由。