VSCodeのdevContainerという技術は知っているでしょうか?
超簡単に説明すると、開発環境をdockerコンテナで作成し、これにLocalで動作しているVSCodeを接続するという技術です。 開発環境を、dockerを使って作成することで再配布や作って壊してを簡単にできるようになります。 devcontainerのconfigでインストールするextensionやfeatureを設定できます。 PCに直接色々インストールせずに済むのもよいです。
で、devcontainerで接続中のVSCodeでTerminalを開くと当然、container内のShellが開くのですが、
ここで Terminal: New Integrated Terminal (local)
というコマンドを実行すると、MacのデフォルトShell (つまりzsh
)を開くことができます。
.....のハズですが、 こんなエラーがでます。
これは、MicrosoftがdevContainer用のイメージとして配布している、 mcr.microsoft.com/vscode/devcontainers/base
をベースとしたイメージを使用していると発生するようです。
原因は、実はこのdevContainer用イメージにはzshがインストールされているのですが、デフォルトの一般ユーザのzshのデフォルトパスが /usr/bin/zsh
に設定されていて、どうやらこの影響を受けているようです。
そのため、今のところは、VSCodeの settings.json
に下記の設定を追加し、
linux
の(osxではない....)のzshのパスを変更すると動くようになりました。
"terminal.integrated.profiles.linux": {
"zsh": {
"path": "/bin/zsh",
"args": [
"-l"
]
},
},
....コンテナ内のパスの設定の影響を受けてホスト側のzshのパス解決するってバグっぽい挙動ですね...