複数のプロジェクトを切り替えることができる Linux コマンドを作成する

こんにちは yoshi です。
これ、需要がどれだけあるか不明ですが、オリジナルの Linux コマンドを作りたくなった時の備忘録になるので記述していきます。

僕は2つのgoogleアカウントを利用して、gcloudの設定を行っているのですが、アカウントの切り替えが大変です。なぜなら毎回

$ gcloud config set account MY_ACCOUNT
$ gcloud config set project MY_PROJECT

と打って $ gcloud config list と打って設定が変わるかどうかを確認しないといけないのです。
「それは面倒くさいよね」となるのがエンジニアで、もっと楽にしようよというのが、このポストの趣旨なのです。

結果

まず結果から。こんなスクリプトを書けば変わります。

"kubechange"という名前で好きなディレクトリに保存します。
今回は/User/user/document/projectで保存するとします。

次に実行権限を与えます。

$ chmod a+x /User/user/document/project/kubechange

とすると実行権限を与えることができるので$ FILE_PATH/kubechange somethingでアカウントの切り替えができるようになります。

自由に使えるようにする

次にこのシェルスクリプトをPCのPATHに入れなければなりません。
というのもこのkubechangeファイルを使用するのには

$ /User/user/document/project/kubechange argument

のようにフォルダのパスをしていてあげなければいけないからです。それよりは

$ kubechange argument

で済んだらいいですよね。PATHにいれることで自由にとり出せるようにPCが認識します。
lsとかcdとかもこのように設定されているのです。

というわけでまずどこがPATHなのかを探ります。

$ echo $PATH

/Users/user/.rbenv/shims:/Users/user/Applications/google-cloud-sdk/bin:/usr/local/php5/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/go/bin

これはPATHが

/Users/user/.rbenv/shims
/Users/user/Applications/google-cloud-sdk/bin
/usr/local/php5/bin
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
/usr/local/go/bin

これだけあることを意味しています。この好きなところに先ほどのkubechangeを入れます。今回は/usr/local/binを選びました。

cp /User/user/document/project/kubechange /usr/local/bin  

すると

$ kubechange argument

がどのディレクトリにいても使えるようになります。

スクリプトの詳細
echo "Set Account"  ##ただ記述するだけ

case $1 in  
    argument1 )
        Do something
        ;;
    argument2 )
        Do something
        ;;
    * ) echo "unknown" 
        ;;
esac

## $1 は引数の1番目という意味です。
## case 〜 esac で条件分岐をしていて $1 が argument1 のときと
## argument2 の時とそれ以外の時 * で実行内容を変えます。

ls /User/user/document ##普通のコマンドも使用可能です。