【发布时间】:2020-01-14 00:37:57
【问题描述】:
我的问题是关于 nvm,但它可能与其他 Node 版本管理有关,例如 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 之类的别名。别名安装在~/.bashrc 中,在您使用 SSH 登录时运行。但是当您使用ssh SERVER COMMAND 执行远程命令时,环境脚本不会运行,因为 shell 在受限模式下运行。
一种解决方法是创建包含/home/monitor/.nvm/versions/node/v12.1.0/bin/node * 并且可执行的~/node,然后您可以执行ssh SERVER './node SCRIPT'。但这并不完美,因为一旦升级 Node,路径就会改变,您也需要更新此文件。
解决将版本托管节点作为远程 SSH 脚本运行的问题的推荐方法是什么?
【问题讨论】:
-
根据这个答案,它仍然应该使用
~/.bashrc:unix.stackexchange.com/a/332533 -
@PatrickStephansen 我认为
.bashrc已运行但环境变量设置不正确,因为shell 处于受限模式。