Javascript Can';t在google云计算实例上运行pm2
当我跑的时候Javascript Can';t在google云计算实例上运行pm2,javascript,ssh,google-cloud-platform,google-compute-engine,gcloud,Javascript,Ssh,Google Cloud Platform,Google Compute Engine,Gcloud,当我跑的时候 gcloud compute ssh user@instance-1 然后,当我被ssh引入时,我键入pm2,它会像预期的那样打印出一条帮助消息 如果我改为跑步 gcloud compute ssh user@instance-1 --command "pm2" 它打印出未找到bash:pm2:command的 我以前安装过pm2(通过以root用户和user的身份运行npm install-g pm2,以获得良好的效果) 这里发生了什么?我的假设是,在第一个配方中,您执行一个
gcloud compute ssh user@instance-1
然后,当我被ssh引入时,我键入pm2
,它会像预期的那样打印出一条帮助消息
如果我改为跑步
gcloud compute ssh user@instance-1 --command "pm2"
它打印出未找到bash:pm2:command的
我以前安装过pm2
(通过以root用户和user
的身份运行npm install-g pm2
,以获得良好的效果)
这里发生了什么?我的假设是,在第一个配方中,您执行一个登录,这意味着运行.profile和/或.bashrc脚本,这些脚本修改您的PATH环境变量,以包括您希望运行的命令的位置(pm2
)。在第二个配方中,您提供了--command
我的假设是,在不执行概要文件脚本的情况下,正在分叉/执行可执行文件(直接运行)。这将导致找不到命令。也许可以尝试运行一个脚本(通过命令)来记录您的环境变量(例如/bin/env
),看看它们与您实际登录时发现的有什么不同
另一个解决方案是在您的命令中提供pm2的完整路径。是的,这就是它。当我通过ssh--命令回显$PATH时,它会打印我的本地(而不是远程)路径。我无法通过编辑.bashrc或.profile或其他任何内容使远程设备使用自己的路径。您知道我如何才能使远程使用在.bashrc或其他地方设置的自己的路径,这样我就不必每次通过命令行发送ssh命令时都手动设置路径了吗?我认为我们需要了解正在使用的框架。您始终可以通过指定命令的完整执行路径来运行命令。。。那将是一个故事。接下来,我们需要了解PATH环境变量是在/etc/environment中设置为基本级别的。如果您需要,您可以扩展它以包括其他目录。。。这就意味着他们是为所有人而存在的。与其考虑“如何运行.bashrc或.profile”,不如更深入地思考并理解运行这些命令对路径的影响。我在这里找到了答案——感谢您的指导!