使用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脚本可能有很多很好的理由。