Windows の VSCode で GitBash ターミナルを開いた時に .bash_profile が読み込まれない

最近 VSCode のターミナルを開くと、Windows GitBash ターミナルの起動時に ~/.bash_profile が読み込まれず、~/.bashrc だけが読み込まれる状態になっていた。

調べてみると、Bash を「ログインシェル」として開くようオプション引数を設定しないといけないようだ。

「ログインシェル」って何やねん、というと、bash を実行する時に --login もしくは -l オプションが設定されているシェルのことで、このオプションが渡されると ~/.bash_profile を含むプロファイル系を読み込むようになる。

ログインシェルでないシェルとは何かというと、-c オプションを付けずに bash を呼び出した場合がこれに当たり、この場合は ~/.bashrc のみが読み込まれるようだ。VSCode ターミナルはこの状態になっていたというワケだ。コレは「インタラクティブシェル」と呼ばれる。

インタラクティブでないシェル、非インタラクティブシェルもあって、-c オプションを付けて $ bash -c /usr/bin/command のようにコマンドを実行した場合。この場合は ~/.bash_profile~/.bashrc も実行されない。

さて、VSCode ターミナルにどうやって --login (= -l) オプションを渡すかというと、settings.json で設定できる。Windows 環境で GitBash を使っているということは、以下のような設定は既に書かれているモノと思われる。

"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"

コレと併せて、次のような設定を記述する。

"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe",
"terminal.integrated.shellArgs.windows": ["-l"]  ← 追加

コレで、次から開くターミナルでは ~/.bash_profile が読み込まれるようになったはずだ。