解释发生这种情况的可能原因:
当你安装 Cloud SDK 时,它需要一些步骤来确保当你从 shell 中输入 gsutil 时,它会解析为 Cloud SDK 版本(取决于安装方法,它可能会在 @ 中生成一些可执行脚本987654322@,或将 /path/to/cloud/sdk/bin 放在 PATH 环境变量的前面)。这个用于 gsutil 的 Cloud SDK 包装器脚本执行一些额外的身份验证逻辑,加载一个额外的 .boto 文件,其中包含运行 gcloud auth login 生成的凭据。运行gcloud version -l时可以看到这个额外的.boto文件:
$ gsutil version -l
[...]
using cloud sdk: True
config path(s): /home/USER/.boto, /home/USER/.config/gcloud/legacy_credentials/USER@gmail.com/.boto
[...]
该额外 .boto 文件中的身份验证凭据可能会覆盖您的 $HOME/.boto 文件中的凭据。
如何再次使用独立的 gsutil:
您需要确保您的 shell 找到的第一个 gsutil 是独立版本。这实质上意味着包含独立 gsutil 可执行文件的目录应位于 PATH 环境变量中的 cloud sdk 目录之前。这可以通过将其添加到 PATH 变量中来完成,方法是在 .bashrc 文件的末尾添加类似的内容:
if [ -d "/path/to/standalone/gsutil/directory" ]; then
PATH="/path/to/standalone/gsutil/directory:$PATH"
fi
完成此操作后,您可以运行此命令重新加载 .bashrc 文件并检查 gsutil 信息的“使用云 sdk”值:
$ source "$HOME/.bashrc"; gsutil version -l
如果这仍然表明您使用的是 Cloud SDK 版本的 gsutil,那么您可能为 gsutil 定义了一个别名 - 您可以通过运行来检查:
$ type gsutil
如果您在使用独立版本的 gsutil 时仍然遇到身份验证问题,则需要生成新凭据:
$ gsutil config