つかびーの技術日記

(情報)工学修士, 元SIer SE, 現Web系 SEの技術blogです。Scala, Java, JS, TS, Python, Ruby, AWS, GCPあたりが好きです。

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のコマンドも使えるようになりました。

 - サーバ