長い旅路の果てにVSCodeに関するある瑣末な知識に辿りついた。VSCodeの統合ターミナルでbashを使ったときに -lを指定した場合、そのオプションは落とされる。これはVSCodeが統合シェルサポートのために--init-fileを使うから。ならばオフィシャルドキュメントの以下の例は誤りか。そうではない。VSCodeが統合シェルを起動するやりかたは、シェルプログラムによって異なる。-lはzshにおいては正しいが、bashにおいては無効である。-lしてるのにどうしても shopt -q login_shell が立たず迷路に迷い込んだあげくの、事の顛末がこれ。

{
  "terminal.integrated.profiles.windows": {
    "PowerShell -NoProfile": {
      "source": "PowerShell",
      "args": ["-NoProfile"]
    }
  },
  "terminal.integrated.profiles.linux": {
    "zsh (login)": {
      "path": "zsh",
      "args": ["-l"]
    }
  }
}
Taiju Muto @tai2