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