在 codespace 中工作时,你可以使用你选择的 shell 打开新的终端窗口,更改新终端窗口的默认 shell,或安装新的 shell。你还可以使用 dotfiles 来配置你的 shell。
使用默认开发容器映像的 Codespace 安装了 bash、zsh 和 fish shell。如果你在 VS Code Web 客户端中打开新的 codespace,或者通过 SSH 连接到 codespace,终端默认会打开一个正在运行的 bash 会话。在 VS Code 桌面应用程序中,默认 shell 取决于你的本地设置和操作系统。有关详细信息,请参阅 VS Code 文档中的终端配置文件。
在 VS Code 中更改默认 shell
如果你不想使用默认 shell,可以使用不同的 shell 打开新的终端会话。
-
如果你看不到 VS Code 中的集成终端,请按 Ctrl+`。
-
在新终端窗口的图标右侧,选择下拉图标。

-
在下拉菜单中,单击你要使用的 shell 的名称。
安装新的 shell
如果你想使用 codespace 的基础映像或开发容器配置中未安装的 shell,你可以安装一个新的 shell。
如果你使用的是默认开发容器映像,请查找 Ubuntu Linux 的安装说明。如果你只想在单个会话中使用不同的 shell,你可以使用命令行在你正在工作的 codespace 中安装 shell。但是,如果你在 codespace 中重建容器,你可能丢失已安装的程序。有关详细信息,请参阅深入了解 GitHub Codespaces。
安装新 shell 的更可靠方法是将安装命令包含在 dotfiles 存储库中,或者作为 devcontainer.json 文件中的生命周期命令(例如 postCreateCommand)。你应该使用 dotfiles 存储库来安装要在所有 codespace 中使用的 shell,并使用 devcontainer.json 文件来安装特定存储库贡献者应该安装的 shell。有关详细信息,请参阅为你的帐户个性化 GitHub Codespaces和开发容器简介。
为新 shell 添加 VS Code 终端配置文件
VS Code 会自动检测大多数标准 shell 并将其添加为终端配置文件,因此你可以轻松地使用已安装的 shell 打开新的终端窗口。
如果自动检测不到你安装的 shell,你可以将新的终端配置文件添加到用户设置中。此设置取决于你的操作系统,因此对于 VS Code Web 客户端,你应该使用 linux,对于桌面应用程序,你应该使用你的本地操作系统。
-
要打开 Visual Studio Code 命令面板,请按 Command+Shift+P (Mac) 或 Ctrl+Shift+P (Windows)。
-
开始键入“用户设置”,然后单击首选项: 打开用户设置 (JSON)。
-
在
settings.json文件中,在 JSON 对象内部,添加一个如下所示的新属性。将OPERATING-SYSTEM替换为相关的操作系统(例如linux、windows或osx),将SHELL替换为你已安装的 shell。JSON "terminal.integrated.profiles.OPERATING-SYSTEM": { "SHELL": { "path": "SHELL" } }"terminal.integrated.profiles.OPERATING-SYSTEM": { "SHELL": { "path": "SHELL" } }例如
"terminal.integrated.profiles.linux": { "csh": { "path": "csh" } } -
保存文件。
你可以使用设置同步在你在 VS Code Web 客户端和桌面应用程序中打开的所有 codespace 之间共享这些设置。如果你在 Web 客户端中工作,设置同步默认处于禁用状态,你必须启用设置同步才能将更改推送到你的设置或拉取你在其他地方所做的更改。有关详细信息,请参阅为你的帐户个性化 GitHub Codespaces。
在 VS Code 中设置默认 shell
你可以设置默认终端配置文件来选择你在 VS Code 中打开的所有新终端窗口使用的默认 shell。默认终端配置文件取决于你的操作系统,因此如果你使用的是 VS Code Web 客户端,你可以为 Linux 设置默认配置文件;如果你使用的是桌面应用程序,则可以为本地操作系统设置默认配置文件。
注意
无论你的默认配置文件如何,在 Web 客户端中打开的 codespace 最初始终会打开一个正在运行的 bash 会话。
-
要打开 Visual Studio Code 命令面板,请按 Command+Shift+P (Mac) 或 Ctrl+Shift+P (Windows)。
-
开始键入“用户设置”,然后单击首选项: 打开用户设置 (JSON)。
-
在 JSON 对象内部,要为相关操作系统设置默认 shell,请添加或编辑如下所示的行。
"terminal.integrated.defaultProfile.OPERATING-SYSTEM": "SHELL"例如
JSON { "terminal.integrated.defaultProfile.osx": "zsh", "terminal.integrated.defaultProfile.linux": "bash", "terminal.integrated.defaultProfile.windows": "PowerShell" }{ "terminal.integrated.defaultProfile.osx": "zsh", "terminal.integrated.defaultProfile.linux": "bash", "terminal.integrated.defaultProfile.windows": "PowerShell" } -
保存
settings.json文件。
你可以使用设置同步在你在 VS Code Web 客户端和桌面应用程序中打开的所有 codespace 之间共享这些设置。如果你在 Web 客户端中工作,设置同步默认处于禁用状态,你必须启用设置同步才能将更改推送到你的设置或拉取你在其他地方所做的更改。有关详细信息,请参阅为你的帐户个性化 GitHub Codespaces。
通过 SSH 设置默认 shell
当你通过 SSH 从命令行连接到 codespace 时,默认会连接到 codespace 中的 bash 会话。
如果你已为 GitHub Codespaces 启用了 dotfiles 存储库,你可以通过将命令添加到 dotfiles 中的安装脚本(例如 install.sh)来更改你连接到的默认 shell。有关详细信息,请参阅将 GitHub Codespaces 与 GitHub CLI 结合使用和为你的帐户个性化 GitHub Codespaces。例如,以下命令将默认 shell 更改为 zsh。
sudo chsh "$(id -un)" --shell "/usr/bin/zsh"
sudo chsh "$(id -un)" --shell "/usr/bin/zsh"
如果你想使用 codespace 中默认未安装的默认 shell,或者确保你拥有最新版本的 shell,你可以先安装 shell。
sudo apt-get update -y sudo apt-get install -y csh sudo chsh "$(id -un)" --shell "/usr/bin/csh"
sudo apt-get update -y
sudo apt-get install -y csh
sudo chsh "$(id -un)" --shell "/usr/bin/csh"
注意
如果你创建新的 codespace(例如使用 gh codespace create),你必须等待足够的时间来确保脚本已完成运行,然后才能通过 SSH 连接到 codespace。如果脚本尚未完成运行,你将连接到默认的 bash 会话。
连接到 codespace 后,对于大多数 shell,你可以使用命令 readlink /proc/$$/exe 来检查正在运行的 shell 是否正确。
配置你的 shell
对于大多数 shell,你可以使用配置文件(例如 .bashrc)来配置具有你首选设置的 shell。这些设置可以包括别名和环境变量。
默认情况下,codespace 包含预安装 shell 的预定义配置。例如,codespace 中的主目录包含 .bashrc 和 .zshrc 文件。你可以更改这些文件的内容,然后使用诸如 source ~/.bashrc 之类的命令来更新你的 shell 配置。但是,如果你在 codespace 中重建容器,你将丢失对这些文件的任何更改。有关详细信息,请参阅深入了解 GitHub Codespaces。
通常,你应该使用 dotfiles 存储库来配置具有你首选设置的 shell。dotfiles 中的设置适用于你创建的所有 codespace,并且在容器重建后仍然存在。有关详细信息,请参阅为你的帐户个性化 GitHub Codespaces。
故障排除 fish shell
fish shell 包含一个基于 Web 的配置界面。你可以使用 fish_config 命令启动本地 Web 服务器并启动此界面,然后执行更改终端提示符或查看环境变量等操作。
你可以在 codespace 中使用 fish 的基于 Web 的界面。但是,VS Code 集成终端中的颜色设置取决于你选择的 VS Code 主题,你无法通过在 fish_config 界面中设置新主题来覆盖这些设置。
当 fish 启动本地服务器时,GitHub Codespaces 为转发端口提供的默认链接不起作用。例如,如果你单击弹出消息中的在浏览器中打开,你将被带到一个错误页面。
访问 fish_config 的基于 Web 的界面
-
在运行
fish会话的终端中,输入fish_config。 -
在终端输出中,使用 Command+click 或 Ctrl+click 打开指向
web_configHTML 文件的链接。$ fish_config Web config started at file:///tmp/web_config60rc9tr3.html Hit ENTER to stop. -
在
web_config文件中,使用 Command+click 或 Ctrl+click 打开指向转发端口的链接。<body> <p><a href="https://:8000/1b9411c2469e392b96df5e5b28da485b/">Start the Fish Web config</a></p> </body>