【问题标题】:Google cloud sdk environment variables谷歌云sdk环境变量
【发布时间】:2026-01-02 08:55:02
【问题描述】:

我想在环境变量中设置项目id,这样我就不想一遍又一遍地写

请帮助我如何在谷歌云 SDK 中进行操作

当我使用此命令“export GOOGLE_CLOUD_PROJECT=$(gcloud config get-value core/project)”时

它给了我错误 'export' 未被识别为内部或外部命令, 可运行的程序或批处理文件。

【问题讨论】:

  • 你在哪里使用这个命令?

标签: google-cloud-platform gcloud


【解决方案1】:

查看@saigeetha-sundar 正确回复。

但是,您似乎使用gcloud config set core/project 设置了项目ID。 gcloud config set 命令的目的是为gcloud 属性设置默认值,这样您就不需要重复编写它们(如您所愿)。

要明确一点:

如果 core/project 值未设置...

gcloud config unset core/project

如果你没有在期望它的命令上指定--project=[[YOUR-PROJECT]],你会得到错误...

注意我以gcloud iam service-accounts list 为例。

gcloud iam service-accounts list
ERROR: The required property [project] is not currently set.
You may set it for your current workspace by running:

  $ gcloud config set project VALUE

or it can be set temporarily by the environment variable [CLOUDSDK_CORE_PROJECT]

而且您必须始终指定它,例如:

gcloud iam service-accounts list --project=[[YOUR-PROJECT]]
DISPLAY NAME                     EMAIL
Default compute service account  1234567890123-compute@developer.gserviceaccount.com

但是,如果你设置了配置值:

gcloud config set core/project [[YOUR-PROJECT]]

那么任何需要项目值的命令都可以在不指定的情况下工作:

gcloud iam service-accounts list
DISPLAY NAME                     EMAIL
Default compute service account  1234567890123-compute@developer.gserviceaccount.com

【讨论】:

    【解决方案2】:

    我尝试从我的项目中运行命令,该命令在 Google Cloud shell 中成功运行,但错误似乎是 Windows 命令行错误,如果您使用 Windows 来运行您必须使用的命令,请使用“ Set”命令创建变量。

    【讨论】:

      【解决方案3】:

      您正在尝试在 Windows 上执行 Linux 命令。

      从批处理文件执行的 Windows 等效项是:

      gcloud config get-value core/project > project.tmp
      for /f "delims=" %%x in (project.tmp) do set GOOGLE_CLOUD_PROJECT=%%x
      del project.tmp
      

      将这些行放入批处理文件 (*.bat)。原因是%% 转义。如果您手动输入命令提示符,请使用以下示例。注意从%%% 的变化。

      在命令提示符下键入的 Windows 等效项:

      gcloud config get-value core/project > project.tmp
      for /f "delims=" %x in (project.tmp) do set GOOGLE_CLOUD_PROJECT=%x
      del project.tmp
      

      命令gcloud config get-value core/project 输出多于一行的文本。这就是for 循环的原因。 for 循环将从project.tmp 读取每一行并将值分配给GOOGLE_CLOUD_PROJECT。最后设置的值是 PROJECT ID。

      如果您在批处理脚本中使用此示例,请在 gcloud 前面添加关键字 call。原因是gcloud 本身就是一个脚本,当它在没有call 的情况下返回时,您的脚本将退出。

      call gcloud config get-value core/project > project.tmp
      

      Windows 遗留(老式)语法有时会很痛苦。

      【讨论】: