⌨️

ひとくちメモ: VSCode + Remote-SSH 環境上で動かす Bash をログインシェルにする

に公開

結論

以下の設定を VSCode の settings.json に足してやればオッケー。

{
  "terminal.integrated.profiles.linux": {
    "bash": {
      "path": "bash",
      "icon": "terminal-bash",
      "args": ["-l"]
    }
  },
  "terminal.integrated.defaultProfile.linux": "bash"
}

bash じゃない人はいい感じに読み替えてください。

こんなことをする羽目になった理由

リモートホストには .profile.bashrc~/ に存在しており、.profile.bashrc を source する POSIX 的な読み込み順序になっている。ここで ssh コマンドでリモートに繋ぐと、リモートでログインシェルが立ち上がるので .profile を読んでくれる。
しかし、VSCode の Remote-SSH だと非ログインシェルが立ち上がるので .bashrc しか読み込んでくれない。いや、それは ssh コマンドと同じ挙動になれよってことで、Remote-SSH で使うシェルもログインシェルにしたかった。

最近流行りの ChatGPT と Gemini にとりあえずどうにかしろと言ってみたが、~/.ssh/config に RemoteCommand を足せだの(もちろんアウト)だの VSCode の remote.SSH.remoteCommand なるオプションを使え(もちろん存在しない)だのろくでもなかった。後 .bashrc から .profile を呼び出せば良いという話も持ち上がったが、非 POSIX 的行いなのでこれは避けたかった。

結局、会社のノーパソで会社のリモート開発 PC に繋げるとログインシェルで立ち上がるな?ってことで会社ノーパソの設定を調べてみたところ、冒頭の設定が一字一句そのままに書いてあったのでそれが答えとなった。当時(数年前?)は ChatGPT をろくに使っていなかったので、これはおそらく自力で調べ上げた結果の産物だと思われる。信じるは自分である。LLM ではない。

Discussion