You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Debian实例上gcloud ssh执行命令时$(lsb_release -cs)结果不一致

问题:Debian计算引擎实例上gcloud ssh命令返回异常版本信息

问题现象

在Debian实例上执行lsb_release -cs时出现结果不一致的情况:

$ gcloud compute ssh instance-1 --command "lsb_release -cs"
bullseye
$ gcloud compute ssh instance-1 --command "echo $(lsb_release -cs)"
focal
$ gcloud compute ssh instance-1
user@instance-1:~$ lsb_release -cs
bullseye
user@instance-1:~$ echo $(lsb_release -cs)
bullseye

仅通过gcloud compute ssh --command执行echo $(lsb_release -cs)时返回focal,其余场景均返回Debian 11的代号bullseye。

原因分析

核心是本地Shell提前解析了命令替换:

  • 当你在本地终端执行gcloud compute ssh instance-1 --command "echo $(lsb_release -cs)"时,本地的bash会优先解析$(lsb_release -cs),在本地机器上运行该命令得到focal(说明你的本地环境是Ubuntu 20.04)。
  • 解析完成后,实际传给远程Debian实例的命令变成了echo focal,因此远程执行后返回focal。
  • 其他场景中,lsb_release -cs都是直接在远程Debian实例上运行,自然返回对应系统的代号bullseye。

解决方法

要让命令替换在远程实例上执行,需阻止本地Shell解析$(...),两种可行方式:

  • 用单引号包裹整个命令:
    gcloud compute ssh instance-1 --command 'echo $(lsb_release -cs)'
    
  • 对美元符号$进行转义:
    gcloud compute ssh instance-1 --command "echo \$(lsb_release -cs)"
    

内容的提问来源于stack exchange,提问作者Gillespie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 06:40:37