zshの場合のGoogle Cloud SDKインストール
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のコマンドも使えるようになりました。