Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';t在google云计算实例上运行pm2_Javascript_Ssh_Google Cloud Platform_Google Compute Engine_Gcloud - Fatal编程技术网

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”,不如更深入地思考并理解运行这些命令对路径的影响。我在这里找到了答案——感谢您的指导!