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