运行 版本托管节点作为远程 SSH 脚本的问题
The problem with running version managed Node as a remote SSH script
我的问题是关于 nvm
但它可能与其他节点版本管理有关,例如 n
或 nvs
。
您可能知道您可以像这样使用 SSH 运行 远程程序:
ssh user@server COMMAND
例如,命令可以是 Node.js 脚本:
ssh user@devserver 'node ~/getstats'
问题是它不适用于使用 nvm
安装的 Node。为什么?因为 node
实际上是 /home/user/.nvm/versions/node/v12.1.0/bin/node
之类的别名。当您使用 SSH 登录时,别名安装在 ~/.bashrc
中,即 运行。但是当你使用 ssh SERVER COMMAND
环境脚本执行远程命令时不是 运行 因为 shell 运行 处于受限模式。
一种解决方法是创建 ~/node
,其中包含 /home/monitor/.nvm/versions/node/v12.1.0/bin/node *
并且是可执行的,然后您可以执行 ssh SERVER './node SCRIPT'
。但这并不完美,因为一旦你升级了 Node,路径就会改变,你也需要更新这个文件。
解决 运行ning 版本托管节点作为远程 SSH 脚本的问题的推荐方法是什么?
你试过运行sss user@host nvm run node ~/getstats
了吗?
试试这个:
ssh user@devserver '. ~/.nvm/nvm.sh && node ~/getstats'
请注意,默认情况下,Ubuntu 18.04 中的 .bashrc
具有以下内容:
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
我的问题是关于 nvm
但它可能与其他节点版本管理有关,例如 n
或 nvs
。
您可能知道您可以像这样使用 SSH 运行 远程程序:
ssh user@server COMMAND
例如,命令可以是 Node.js 脚本:
ssh user@devserver 'node ~/getstats'
问题是它不适用于使用 nvm
安装的 Node。为什么?因为 node
实际上是 /home/user/.nvm/versions/node/v12.1.0/bin/node
之类的别名。当您使用 SSH 登录时,别名安装在 ~/.bashrc
中,即 运行。但是当你使用 ssh SERVER COMMAND
环境脚本执行远程命令时不是 运行 因为 shell 运行 处于受限模式。
一种解决方法是创建 ~/node
,其中包含 /home/monitor/.nvm/versions/node/v12.1.0/bin/node *
并且是可执行的,然后您可以执行 ssh SERVER './node SCRIPT'
。但这并不完美,因为一旦你升级了 Node,路径就会改变,你也需要更新这个文件。
解决 运行ning 版本托管节点作为远程 SSH 脚本的问题的推荐方法是什么?
你试过运行sss user@host nvm run node ~/getstats
了吗?
试试这个:
ssh user@devserver '. ~/.nvm/nvm.sh && node ~/getstats'
请注意,默认情况下,Ubuntu 18.04 中的 .bashrc
具有以下内容:
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac