我有一个运行nodejs应用程序的upstart
脚本,但是Node.js
与nvm
一起安装。我从另一个文件中获得一些变量upstart
,我的script
部分如下所示:
script
. /etc/default/nodejs
exec start-stop-daemon --start --make-pidfile --pidfile /var/run/app.pid
--chdir /home/node-apps/ --chuid root:root
--exec $NODE_NVM_PATH app.js >> /var/log/node/app.log 2>&1
end script
在
/etc/default/nodejs
(chmod 744)中,我有:NODE_NVM_PATH=$(which node)
有了
which node
输出通过nvm
安装的nodejs路径的想法;因为如果我更新或更改Node.js
版本,我不想编辑此文件中的新路径。但是使用这种方法,不起作用,而且我的
app.js
没有运行。我也试过export NODE_NVM_PATH=$(which node)
,同样的结果。但如果我说:
NODE_NVM_PATH="/root/.nvm/versions/node/v12.2.0/bin/node"
里面的一切都很完美。
所以我的问题是:
如何才能在另一个文件中执行
/etc/default/nodejs
,并将其源代码发送给upstart?笔记:
我还有一个名为
which node
的环境变量,它输出nodejs的路径,但也不知道如何将其源代码提供给upstart。实际上,
$NVM_BIN
指令只在一行中;我在这里用分隔的行粘贴,以避免滚动 最佳答案
尝试反引号“`”,而不是$()
NODE_NVM_PATH=$(which node)
NODE_NVM_PATH=`which node`
echo ${NODE_NVM_PATH}
你可以让我们知道它的作用。
关于node.js - 如何将命令的执行导出到 Upstart 的脚本中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56199824/