2

我用 nvm 安装了节点,它工作正常,但是我需要执行每个新会话source $HOME/nvm/nvm.sh才能使节点处于活动状态

我该如何做才能在启动时处于活动状态,因此无需source $HOME/nvm/nvm.sh在每个 sssh 会话中输入

我尝试将此命令添加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 上执行该命令可以正常工作

欢迎任何帮助

问候

4

3 回答 3

1

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

[[ -s /home/$USER/.nvm/nvm.sh ]] && . /home/$USER/.nvm/nvm.sh
于 2015-06-23T20:23:56.677 回答
0

我希望您的 init 脚本#!/bin/sh在需要以#!/bin/bash. 当然,不使用 Bash 编写 init 脚本可能有很多很好的理由......

于 2013-07-22T22:19:39.733 回答
0

init 脚本以 root 身份运行,而不是您的用户。如果你想自己获取nvm.sh,你不应该使用$HOME,而应该使用绝对路径,比如/home/vitor/nvm/nvm.sh. 此外,init 脚本可能正在运行,dash因此您不应使用该[[构造。只需[按照此破折号中的描述使用/bin/sh 文章

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

我认为这与破折号不兼容。所以我建议你把 nvm.sh 留在文件系统的其他地方,然后在你的初始化脚本中做

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

开始可能也足够node_start.sh了。#!/bin/bash

您可能还想在 github 上为 nvm 订阅 issue 168,其他人遇到此错误。

于 2012-11-26T00:01:51.807 回答