Al trabajar en un codespace, puedes abrir una nueva ventana de terminal con un shell de tu elección, cambiar el shell predeterminado para las nuevas ventanas de terminal o instalar un nuevo shell. También puedes usar dotfiles para configurar el shell.
Los codespaces que usan la imagen de contenedor de desarrollador predeterminada vienen instalados con los shells bash
, zsh
y fish
. Si abres un nuevo codespace en el cliente web VS Code o te conectas a un codespace a través de SSH, el terminal se abre con una sesión bash
que se ejecuta de forma predeterminada. En la aplicación de escritorio VS Code, el shell predeterminado depende de la configuración local y del sistema operativo. Para más información, consulta Perfiles de terminal en la documentación de VS Code.
Cambio del shell predeterminado en VS Code
Si no quieres usar el shell predeterminado, puedes abrir una nueva sesión de terminal con otro shell.
-
Si no puedes ver el terminal integrado en VS Code, presiona Ctrl+`.
-
A la derecha del icono para abrir una nueva ventana de terminal, selecciona el icono de lista desplegable.
-
En el menú desplegable, haz clic en el nombre del shell que quieres usar.
Instalación de un nuevo shell
Si quieres usar un shell que aún no está instalado en la imagen base o en la configuración del contenedor de desarrollo para un codespace, puedes instalar un nuevo shell.
Si usa la imagen de contenedor de desarrollador predeterminada, busque las instrucciones de instalación para Ubuntu Linux. Si solo quieres usar un shell diferente para una sesión, puedes usar la línea de comandos para instalarlo en el codespace en el que estás trabajando. Sin embargo, es posible que pierdas los programas que has instalado si vuelves a generar el contenedor en el codespace. Para más información, consulta Análisis en profundidad de GitHub Codespaces.
Una opción más sólida para instalar nuevos shells es incluir los comandos de instalación en un repositorio de dotfiles o como un comando de ciclo de vida como postCreateCommand
en un archivo devcontainer.json
. Deberías usar un repositorio de dotfiles para instalar un shell que quieras usar en todos tus propios codespaces y un archivo devcontainer.json
para un shell que los colaboradores de un repositorio concreto deberían tener instalado. Para más información, consulta Personalización de GitHub Codespaces para la cuenta y Introducción a los contenedores dev.
Adición de un perfil de terminal de VS Code para un nuevo shell
VS Code detecta automáticamente la mayoría de los shells estándar y los agrega como perfil de terminal, por lo que puedes abrir fácilmente nuevas ventanas de terminal con el shell que has instalado.
Si el shell que instalas no se detecta automáticamente, puedes agregar un nuevo perfil de terminal a la configuración de usuario. Esta configuración depende del sistema operativo, por lo que debes usar linux
para el cliente web de VS Code y el sistema operativo local para la aplicación de escritorio.
-
Para abrir la Visual Studio Code Command Palette, presiona Comando+Mayús+P (Mac) o Ctrl+Mayús+P (Windows).
-
Empieza a escribir "configuración de usuario" y, luego, haz clic en Preferencias: Abrir configuración de usuario (JSON) .
-
En el archivo
settings.json
, dentro del objeto JSON, agrega una nueva propiedad como la siguiente. ReemplazaOPERATING-SYSTEM
por el sistema operativo correspondiente (comolinux
,windows
oosx
) ySHELL
por el shell que has instalado.JSON "terminal.integrated.profiles.OPERATING-SYSTEM": { "SHELL": { "path": "SHELL" } }
"terminal.integrated.profiles.OPERATING-SYSTEM": { "SHELL": { "path": "SHELL" } }
Por ejemplo:
"terminal.integrated.profiles.linux": { "csh": { "path": "csh" } }
-
Guarde el archivo.
Puedes usar la sincronización de la configuración para compartir estos valores de configuración entre todos los codespaces que abras en el cliente web y la aplicación de escritorio de VS Code. Si estás trabajando en el cliente web, la sincronización de la configuración está deshabilitada de forma predeterminada y debes habilitarla para insertar cambios en la configuración o extraer nuevos cambios realizados en otro lugar. Para obtener más información, vea «Personalización de GitHub Codespaces para la cuenta».
Establecimiento del shell predeterminado en VS Code
Puedes establecer un perfil de terminal predeterminado para elegir el shell predeterminado usado para todas las ventanas de terminal nuevas que abras en VS Code. El perfil de terminal predeterminado depende del sistema operativo, por lo que puedes establecer un perfil predeterminado para Linux, si usas el cliente web de VS Code, o para el sistema operativo local, si usas la aplicación de escritorio.
Note
Independientemente del perfil predeterminado, los codespaces abiertos en el cliente web siempre se abren con una sesión de bash
que se ejecuta inicialmente.
-
Para abrir la Visual Studio Code Command Palette, presiona Comando+Mayús+P (Mac) o Ctrl+Mayús+P (Windows).
-
Empieza a escribir "configuración de usuario" y, luego, haz clic en Preferencias: Abrir configuración de usuario (JSON) .
-
Dentro del objeto JSON, para establecer el shell predeterminado para el sistema operativo correspondiente, agrega líneas o edita líneas existentes como en el ejemplo siguiente.
"terminal.integrated.defaultProfile.OPERATING-SYSTEM": "SHELL"
Por ejemplo:
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" }
-
Guarde el archivo
settings.json
.
Puedes usar la sincronización de la configuración para compartir estos valores de configuración entre todos los codespaces que abras en el cliente web y la aplicación de escritorio de VS Code. Si estás trabajando en el cliente web, la sincronización de la configuración está deshabilitada de forma predeterminada y debes habilitarla para insertar cambios en la configuración o extraer nuevos cambios realizados en otro lugar. Para obtener más información, vea «Personalización de GitHub Codespaces para la cuenta».
Establecimiento del shell predeterminado a través de SSH
Cuando te conectas a un codespace desde la línea de comandos sobre SSH, lo haces a una sesión de bash
del codespace de forma predeterminada.
Si has habilitado un repositorio de dotfiles para GitHub Codespaces, puedes cambiar el shell predeterminado al que te conectas agregando un comando a un script de instalación, como install.sh
en tus dotfiles. Para más información, consulta Uso de GitHub Codespaces con la CLI de GitHub y Personalización de GitHub Codespaces para la cuenta. Por ejemplo, el siguiente comando cambia el shell predeterminado a zsh
.
sudo chsh "$(id -un)" --shell "/usr/bin/zsh"
sudo chsh "$(id -un)" --shell "/usr/bin/zsh"
Si quieres usar un shell predeterminado que no esté instalado en el codespace de forma predeterminada o asegurarte de que tiene la versión más reciente del shell, puedes instalar primero el 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"
Note
Si creas un nuevo codespace (por ejemplo, mediante gh codespace create
), debes esperar el tiempo suficiente para asegurarte de que el script ha terminado de ejecutarse antes de conectarte al codespace a través de SSH. Si el script no ha terminado de ejecutarse, te conectarás a una sesión de bash
predeterminada.
Cuando te hayas conectado al codespace, en la mayoría de los shells, puedes usar el comando readlink /proc/$$/exe
para comprobar que se está ejecutando el shell correcto.
Configuración del shell
Con la mayoría de los shells, tienes la opción de usar un archivo de configuración, como .bashrc
, para configurar el shell con tus opciones preferidas. Esta configuración puede incluir elementos como alias y variables de entorno.
De forma predeterminada, los codespaces contienen una configuración predefinida para los shells que vienen preinstalados. Por ejemplo, el directorio principal de un codespace contiene archivos .bashrc
y .zshrc
. Puedes cambiar el contenido de estos archivos y, luego, usar un comando como source ~/.bashrc
para actualizar la configuración del shell. Sin embargo, si recompilas el contenedor en un codespace, perderás los cambios en estos archivos. Para más información, consulta Análisis en profundidad de GitHub Codespaces.
Por lo general, debes usar un repositorio de dotfiles para configurar shells con tus opciones preferidas. La configuración de los dotfiles se aplica a todos los codespaces que crees y persiste en las recompilaciones del contenedor. Para más información, consulta Personalización de GitHub Codespaces para la cuenta.
Solución de problemas del shell fish
El shell fish
incluye una interfaz de configuración basada en web. Puedes usar el comando fish_config
para iniciar un servidor web local e iniciar esta interfaz y, luego, hacer cosas como cambiar el símbolo del sistema del terminal o ver las variables de entorno.
Puedes usar la interfaz basada en web para fish
en un codespace. Sin embargo, la configuración de color del terminal integrado de VS Code depende del tema de VS Code elegido, y no puedes invalidar esta configuración estableciendo un nuevo tema en la interfaz fish_config
.
Cuando fish
inicia el servidor local, el vínculo predeterminado que GitHub Codespaces proporciona al puerto reenviado no funciona. Por ejemplo, si haces clic en Abrir en el explorador en el mensaje emergente, irás a una página de error.
Para acceder a la interfaz basada en web para fish_config
:
-
En un terminal que ejecuta una sesión de
fish
, escribefish_config
. -
En la salida del terminal, usa Comando+clic o Ctrl+clic para abrir el vínculo al archivo HTML
web_config
.$ fish_config Web config started at file:///tmp/web_config60rc9tr3.html Hit ENTER to stop.
-
En el archivo
web_config
, usa Comando+clic o Ctrl+clic para abrir el vínculo al puerto reenviado.<body> <p><a href="http://localhost:8000/1b9411c2469e392b96df5e5b28da485b/">Start the Fish Web config</a></p> </body>