zshの場合のGoogle Cloud SDKインストール


Google Compute Engineを使ってみよう、と思ったものの初期設定で少し苦労したので、そのメモです。

初期設定

以下が参考になります。ありがとうございます。助かります。

Google Compute Engine 入門

今回はGoogle Cloud SDKをインストールするときにエラーが発生しました。

エラー

以下のURLを参考にSDKをインストールします。

Google Cloud SDK — Google Developers

私はMacなので、以下のコマンドを実行しました。

curl https://dl.google.com/dl/cloudsdk/release/install_google_cloud_sdk.bash | bash

色々聞かれます。

SDKインストール場所は適当に/usr/localとでもしておきました。パス変更のための設定はデフォルトでは/Users/[username]/.bash_profileとなっていますが、自分はzshなので/Users/[username]/.zshrcとしました。パスの変更や補完もYとしました。

実際.zshrcを見ると、最下部に2行ほどsourceが追加されています。

# The next line updates PATH for the Google Cloud SDK.
source /usr/local/google-cloud-sdk/path.bash.inc

# The next line enables bash completion for gcloud.
source /usr/local/google-cloud-sdk/completion.bash.inc

私はzshを使っているので、2つ目のcompletion.bash.incはcompletion.zsh.incに変更しました。

pathの方はzsh版が用意されていなかったので、これでいいのかな?と思いzshを再起動しましたが、エラー。

/usr/local/google-cloud-sdk/path.bash.inc:3: = not found

見事にpathのスクリプトでこけてるし。しかもnot foundって何なの・・・。

トラブルシューティング

path.bash.incがコケている理由ですが、そのファイルを見ると分かります。$BASH_SOURCEという変数を利用していますが、これはzshでは使えません。

BASH_SOURCEを利用しないpath.zsh.incを作ろうかと思い色々やってみましたが、どうも上手く行かず。しかし少しして、「このスクリプトは結局export PATHをするためにあるのだから、そこだけ書けば良いのでは?」と閃きました。全然たいしたことじゃないですが・・・。

という訳で、以下のようにしてexport PATHをするだけのスクリプトを作成しました。

#自分の場合は/usr/localにSDKを入れたので、違う場所に入れた人は適宜読み替えてください
vi /usr/local/google-cloud-sdk/path.zsh.inc
#ファイルに以下のように記述します
export PATH=/usr/local/google-cloud-sdk/bin:$PATH

#プロファイルにて読み込むファイルをpath.bash.incからpath.zsh.incに変更します
vi ~/.zshrc

source /usr/local/google-cloud-sdk/path.zsh.inc

これでzshを再起動したところ、無事エラーも出ず、SDKのコマンドも使えるようになりました。