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 が読み込まれるようになったはずだ。