YAMAGUCHI::weblog

噛み付き地蔵に憧れて、この神の世界にやってきました。マドンナみたいな男の子、コッペです。

ターミナルのデモ用プロファイルで特定の環境変数を反映させる

はじめに

こんにちは、Stackdriver担当の者です。仕事柄デモを大勢の前で行う機会が度々あるのですが、その際にターミナルのプロファイルを普段使っているものと分けたくなりました。とりあえずこういう形が良いかなというところで落ち着いたのでメモしておきます。

やりたいこと

  • 文字サイズの変更(デモ用なのでとても大きく)
  • 起動時に環境変数の読み込み
    • PS1をシンプルなものに
    • GCPAWSなどのcredentialを自動で環境変数に設定し、デモ中に読み込みの必要を無くす。また万が一ターミナルを落としてしまっても、同じプロファイルで起動するだけで良くする。

各種ターミナルエミュレータでの設定

macOSのiTerm2での設定

macOSではiTerm2を使っていますが、Profileの設定でCommandという項目があります。

f:id:ymotongpoo:20180821132428p:plain

ここを "Login shell" ではなく "Command" にチェックを入れ、起動させたいコマンドを書くわけですが、ここにこれから書くシェルスクリプトへのパスを書いておきます。

LinuxでのGNOME Terminalでの設定

マシンによってはLinuxデスクトップ環境で、GNOME Terminalを使っています。その場合も同様に "Run a custom command instead of my shell" にチェックし、そこに同様にシェルスクリプトへのパスを書いておきます。

f:id:ymotongpoo:20180821133550p:plain

.demo.sh の内容

起動時に呼び出すコマンドは単純に通常使っているシェルを呼び出し、その後各種環境変数の設定をexportします。

#!/bin/bash
export DEMO=1
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/credential.json
export AWS_ACCESS_KEY=xxxxxxxxxxxx
export AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxx
export AWS_DEFAULT_REGION=us-east-2
source /path/to/venv/bin/activate

exec /bin/zsh

ここで先頭の DEMO という環境変数は、自分の .zshrc 内でプロンプトの切り替えを行うために設定しています。

...
if [ -n "${DEMO}" ] && [ "${DEMO}" = "1" ]; then
  PROMPT="> "
fi
...

これでデモ用プロファイルを指定して立ち上げるだけでいい感じになりました。