找不到 gcloud 命令 - 安装 Google Cloud SDK 时

gcloud command not found - while installing Google Cloud SDK

我在 mac 上,正在尝试在终端中使用此命令安装 Google Cloud SDK(包括 gcloud 命令行实用程序)

curl https://sdk.cloud.google.com | bash

见于 https://cloud.google.com/sdk/

它一直走到尽头并完成了,但即使在我重新启动 shell 之后,gcloud 命令仍然说找不到它。

为什么这个安装不工作?

下面是我之前针对此问题的修复,但事实证明它不是永久性的。它有效,但每次重新启动终端时,您都必须做同样的事情,这是不切实际的。

所以我建议你删除当前的google-cloud-sdk目录,重新安装即可。确保(正如 Zachary 提到的)对提示 Modify profile to update your $PATH and enable bash completion? (Y/n).

回答是 (Y)

这是我的旧答案,只是重做安装:

I had the same problem, gcloud wasn't working for me. But then, in the same directory as my google-cloud-sdk folder which I had just installed (my home directory), I found this file called test. Inside this test file I found two commands:

# The next line updates PATH for the Google Cloud SDK.
source '[path-to-my-home]/google-cloud-sdk/path.bash.inc'
# The next line enables bash completion for gcloud.
source '[path-to-my-home]/google-cloud-sdk/completion.bash.inc'

After I ran these two source commands in terminal, gcloud worked!

我必须获取我的 bash_profile 文件。为此,

  1. 打开终端会话。
  2. 在该会话类型中: source .bash_profile 然后按 enter

现在,gcloud 命令应该可以工作了

我也一样,我试试

source ~/.bashrc

然后,成功了

我在 ~/.bash_profile 中发现了不正确的 if-fi 语句 (下一个块没有if条件)

source '/Users/yorko/google-cloud-sdk/path.bash.inc'

fi

我只需要删除 "fi" 和 运行 "source ~/.bash_profile" 即可使其正常工作。

我遇到了同样的问题,这是因为 ~/.bash_profile 有无效的 fi 语句。

修复:

  1. 执行命令sudo nano ~/.bash_profile
  2. 删除了关闭 fi 语句 (缺少开头的语句 if
  3. 保存 .bash_profile 更改
  4. 执行命令source ~/.bash_profile
$ sudo su
$ /opt/google-appengine-sdk/bin/gcloud components update
$ su <yourusername>

这个对我有用:

source ~/.bash_profile

这对我有用:

说完YModify profile to update your $PATH and enable bash completion? (Y/n)?

Google 初始化提示:Enter a path to an rc file to update, or leave blank to use 并且默认路径是:[/Users/MY_USERSAME/.bash_profile]: 但我没有按 enter,而是写了:/Users/MY_USERNAME/.bashrc 到更改路径。

这将覆盖 Google 建议的默认位置。

然后,我只需要做 source ~/.bashrc 现在一切正常!

在 Mac/Linux,您需要在 ~/.bashrc 中输入以下条目:

export PATH="/usr/lib/google-cloud-sdk/bin:$PATH"

如果运行

source ~/.bashrc

结果 "No such file or directory"

在 windows 上:

  1. 转到c/Users/
  2. 按住 shift 键,右键单击 .bashrc 文件和 select "Copy as path"
  3. 在 bash 中:source <pasteCopiedPathHere> -> 例如:source "C:\Users\John\.bashhrc"

Post安装说明不清楚:

==> Source [/.../google-cloud-sdk/completion.bash.inc] in your profile to enable shell command completion for gcloud.
==> Source [/.../google-cloud-sdk/path.bash.inc] in your profile to add the Google Cloud SDK command line tools to your $PATH.

我必须在我的 .bash_profile 中实际添加以下代码行才能使 gcloud 工作:

source '/.../google-cloud-sdk/completion.bash.inc'
source '/.../google-cloud-sdk/path.bash.inc'

我今天遇到了这个问题,将 sudo 添加到 install command 解决了我在 maxOS Sierra 上的问题!

sudo ./google-cloud-sdk/install.sh

我是 运行 zsh,发现这个要点非常有用:https://gist.github.com/dwchiang/10849350

编辑 ~/.zshrc 文件以包含这两行:

# The next line updates PATH for the Google Cloud SDK.
source /Users/YOUR_USERNAME/google-cloud-sdk/path.zsh.inc

# The next line enables zsh completion for gcloud.
source /Users/YOUR_USERNAME/google-cloud-sdk/completion.zsh.inc

这假设您从 official docs

安装包到主目录

现在 运行在 Mac OSinstall.sh 之后,google 本身将信息提供给 运行 completion.bash.incpath.bash.inc.

如果您使用的是 zsh 终端,它会要求您 运行 completion.zsh.incpath.zsh.inc。请看下图

您只需要以 root 身份执行此命令

$ curl https://sdk.cloud.google.com | bash

重启终端即可。现在所有命令都应该以 root

身份执行

我知道这个问题已经得到解答,但这是我的两分钱。 安装 gcloud 后,您需要重新启动 shell 才能使用 gcloud 命令。

如何执行此操作主要取决于您保存 shell 配置的文件。大多数文件是 .bashrc_profile.bashrc.zshrc

您现在可以使用

重新开始

source ~/.bashrc_profile

您可以将文件替换为您已有的文件。

或者,如果您不关心您拥有的文件,在 Mac 或 linux 上,您可以重新启动 shell。

exec -l $SHELL

安装SDK时我用的是这个方法:

curl https://sdk.cloud.google.com | bash

使用原作者提供的此方法时,请确保您已接受 mac 设置中的安全首选项,以允许从应用商店下载应用并识别开发人员。

如何在 Mac OS HIGH Sierra:

  1. 下载安装包 Here

  2. 获取文件并放入您的文件夹

  3. 打开终端,转到包含文件的文件夹并输入此命令:

     ./google-cloud-sdk/install.sh
    
  4. "Modify profile to update your $PATH and enable bash completion?"

  5. 输入此路径修改:
    /Users/USERNAME_COMPUTER/.bashrc
  6. 全部安装完成后,输入:

      source ~/.bashrc
    
  7. 输入此内容以检查安装 gcloud:

    gcloud--version

  8. 打开新的window终端cmd+n DONT CLOSE OLD WINDOW 然后输入新的 window gcloud version

    如果:«未找到命令»转到步骤 9

    else: 恭喜 GCloud 在终端工作

  9. Return 到旧 window 并输入 echo $PATH 并将路径复制到 GCloud

  10. 打开BASH_PROFILE:

    open ~/.bash_profile
    
  11. 输入新路径 Bash:

    « export PATH="/Users/USERNAME_COMPUTER/google-cloud-sdk/bin:$PATH" »
    
  12. Return 到步骤 8

如果您是 运行 ZSH shell 在 MacOS 中,您应该重新运行安装,当您被问到这个问题时:

Modify profile to update your $PATH and enable shell command 
completion?

回答YES

Enter a path to an rc file to update, or leave blank to use 
    [/Users/your_user/.bash_profile]:

答案(你的 zshrc 路径):/Users/your_user/.zshrc

重启终端即可。

要在 MacOs Sierra 上启动它,在安装 gcloud 之后我修改了我的 .bash_profile

原文:

# The next line updates PATH for the Google Cloud SDK.
if [ -f '/Users/alejandro/google-cloud-sdk/path.bash.inc' ]; then . '/Users/alejandro/google-cloud-sdk/path.bash.inc'; fi

# The next line enables shell command completion for gcloud.
if [ -f '/Users/alejandro/google-cloud-sdk/completion.bash.inc' ]; then . '/Users/alejandro/google-cloud-sdk/completion.bash.inc'; fi

更新为:

# The next line updates PATH for the Google Cloud SDK.
if [ -f '/Users/alejandro/google-cloud-sdk/path.bash.inc' ]; then source '/Users/alejandro/google-cloud-sdk/path.bash.inc'; fi

# The next line enables shell command completion for gcloud.
if [ -f '/Users/alejandro/google-cloud-sdk/completion.bash.inc' ]; then source '/Users/alejandro/google-cloud-sdk/completion.bash.inc'; fi

重启终端,一切正常!

sudo ./google-cloud-sdk/install.sh

我在根目录中 运行 并且有效。我是 运行 macOS Mojave 版本 10.14.3。

我在这里遇到了一个非常不同的故事,结果证明是由我的 Python 虚拟环境.

引起的

在 运行ning curl https://sdk.cloud.google.com | bash 中间的某个地方,我收到 error:

~/google-cloud-sdk/install.sh
Welcome to the Google Cloud SDK!
pyenv: python2: command not found

The `python2' command exists in these Python versions:
  2.7.14
  miniconda2-latest

解决方案 我修改了google-cloud-sdk/install.sh脚本:

# if CLOUDSDK_PYTHON is empty
if [ -z "$CLOUDSDK_PYTHON" ]; then
  # if python2 exists then plain python may point to a version != 2
  #if _cloudsdk_which python2 >/dev/null; then
  #  CLOUDSDK_PYTHON=python2
  if _cloudsdk_which python2.7 >/dev/null; then
    # this is what some OS X versions call their built-in Python
    CLOUDSDK_PYTHON=python2.7

并且能够 运行 安装成功。 但是,我仍然需要激活我的 pyenv,它有 python2 命令到 运行 gcloud

为什么会这样

如果您查看 google-cloud-sdk/install.sh 脚本,您会发现它实际上正在以非常粗暴的方式检查 Python 的版本:

if [ -z "$CLOUDSDK_PYTHON" ]; then
  # if python2 exists then plain python may point to a version != 2
  if _cloudsdk_which python2 >/dev/null; then
    CLOUDSDK_PYTHON=python2

然而,在我的机器上 python2 不指向 Python 二进制文件,returns 也不指向 null。所以安装崩溃了。

尝试在 Ubuntu/Linux 上执行此命令:

sudo ./google-cloud-sdk/install.sh

关闭终端或打开一个新的 window,如日志所述:

==> Start a new shell for the changes to take effect.

完成后尝试通过 glcloud 命令安装任何包:

gcloud components install app-engine-php

不会显示错误。

如果你在 MAC OS 上并使用 .zsh shell 然后做以下:

  1. 编辑您的 .zshrc 并添加以下内容

    # The next line updates PATH for the Google Cloud SDK.
    source /Users/USER_NAME/google-cloud-sdk/path.zsh.inc
    
    # The next line enables zsh completion for gcloud.
    source /Users/USER_NAME/google-cloud-sdk/completion.zsh.inc
    
  2. 在您的主目录下创建名为 path.zsh.inc 的新文件 (/Users/USER_NAME/):

    script_link="$( readlink "[=11=]" )" || script_link="[=11=]"
    apparent_sdk_dir="${script_link%/*}"
    if [ "$apparent_sdk_dir" == "$script_link" ]; then
     apparent_sdk_dir=.
    fi
    sdk_dir="$( cd -P "$apparent_sdk_dir" && pwd -P )"
    bin_path="$sdk_dir/bin"
    export PATH=$bin_path:$PATH
    

结帐更多@Official Docs

简而言之:

emacs -nw ~/.zshrc
And add following line at the beginning:

# The next line updates PATH for the Google Cloud SDK.
source '/home/lesaint/GOOGLE_CLOUD/google-cloud-sdk/path.zsh.inc'

#The next lines enables bash completion in Zsh for gcloud. 
autoload -U compinit compdef
compinit
source '/home/lesaint/GOOGLE_CLOUD/google-cloud-sdk/completion.zsh.inc'

以下文章提出的解决方案对我有效:

参考: http://www.javatronic.fr/tips/2014/10/17/installing_google_cloud_sdk_on_ubuntu_with_oh-my-zsh.html

检查我的解决方案: -bash: gcloud: command not found on Mac

使用 .zsh shell 你可以尝试在 ~/.zshrc 文件的 plugin list 中添加 glcoud

plugins=(
  gcloud
)

如果这不起作用,试试这个:(更新 Krishna's 答案)

  1. 更新 ~/.zshrc 文件
# Updates PATH for the Google Cloud SDK.
source /Users/austris/google-cloud-sdk/path.zsh.inc

# Enables zsh completion for gcloud.
source /Users/austris/google-cloud-sdk/completion.zsh.inc
  1. 使用以下内容更新 google-cloud-sdk/path.zsh.inc 文件
script_link="$( readlink "[=12=]" )" || script_link="[=12=]" 
apparent_sdk_dir="${script_link%/*}" 
if [[ "$apparent_sdk_dir" == "$script_link" ]]; then
  apparent_sdk_dir=. 
fi
sdk_dir="$( cd -P "$apparent_sdk_dir" && pwd -P )" 
bin_path="$sdk_dir/bin" 
export PATH=$bin_path:$PATH

*原始答案中缺少第三行的双方括号

除了上述答案之外,根据您的发行版,可能需要在调用 gsutil 命令之前从命令行执行 bash 命令。对于默认使用 tcsh 或其他 shell 的发行版来说就是这种情况。通过键入“bash”,源将更改为 .bashrc 文件并执行该文件。

# Step 1
bash
# Step 2
gsutil 
#Step 3: profit!

您必须将命令添加到路径

运行

brew info --cask google-cloud-sdk

并找到要附加到 ~/.zshrc

的行

可以从上一个命令的输出中获取要追加的行。对于 zsh 用户,应该是这样的:

export CLOUDSDK_PYTHON="/usr/local/opt/python@3.8/libexec/bin/python"
source "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/path.zsh.inc"
source "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.zsh.inc"

(或根据您使用的 Shell 从命令输出中选择合适的)

如果您是 macOS 自制 zsh 用户:

  1. brew cask install google-cloud-sdk

  2. 更新你的 ~/.zshrc:

plugins=(
  ...
  gcloud
)
  1. 打开新的 shell.

我安装失败的原因:

  • 我是 运行 zsh 终端,install.shpath.bash.inc 插入我的 .bash_profile

修复:

  1. cd [whereever]/google-cloud-sdk && ./install.sh
  2. vi ~/.bash_profile
  3. path.bash.inc 的所有实例替换为 path.zsh.inc

os 配置:

  • macOS 卡特琳娜
  • zsh

参考:

它对我有用:

  1. https://cloud.google.com/sdk/docs/install
  2. 下载SDK
  3. 将存档解压到我的主目录(我的主目录是“nintran”)
  4. 运行 "./google-cloud-sdk/bin/gcloud 初始化"

通过 运行 ./google-cloud-sdk/install.sh --help 检查安装 zip 后,参数 --path-update 对我有用。如下使用,

./google-cloud-sdk/install.sh --path-update true

它会自动将 PATH 更新添加到 .bashrc(不同的 rc 文件请参阅 --rc-path 参数)。添加 --quiet 无交互参数。

sudo ./google-cloud-sdk/install.sh

然后

Enter a path to an rc file to update, or leave blank to use 
[/Users/uer/.bash_profile]:  "/usr/lib/google-cloud-sdk/bin:$PATH"

结果:

["/usr/lib/google-cloud-sdk/bin:$PATH"] has been updated.

如果您将 zsh 与 Mac 一起使用,安装后 initialization,您只需要 source ~./zshrc 来应用更改。

如果你通过snap安装了google-cloud-sdk,你必须将路径vaiable.Add snap目录修改为PATH作为export PATH=$PATH:/snap/bin 这对我有用。

在我的例子中,我在安装 Google Cloud SDK 后将终端从 bash 切换到 zsh,因此显示 'zsh: command not found: gcloud' 错误。

运行

解决了
source ~/.zshrc

我做错的是没有为我的 OS 选择正确的下载。我不小心选择了 Apple Intel 而不是 Apple Silicon。尽管安装似乎可以工作,但我无法使用 gcloud 命令。删除文件夹并重新安装正确的 Apple Silicon 版本后,一切正常。