# Cambio del shell en un codespace

Puedes cambiar el shell en un codespace para mantener tu configuración habitual.

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](https://code.visualstudio.com/docs/terminal/profiles) 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.

1. Si no puedes ver el terminal integrado en VS Code, presiona <kbd>Ctrl</kbd>+<kbd>\`</kbd>.

2. A la derecha del icono <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-plus" aria-label="plus" role="img"><path d="M7.75 2a.75.75 0 0 1 .75.75V7h4.25a.75.75 0 0 1 0 1.5H8.5v4.25a.75.75 0 0 1-1.5 0V8.5H2.75a.75.75 0 0 1 0-1.5H7V2.75A.75.75 0 0 1 7.75 2Z"></path></svg> para abrir una nueva ventana de terminal, selecciona el icono de lista desplegable.

   ![Captura de pantalla del terminal integrado en VS Code. Junto al icono de signo más, hay una flecha hacia abajo delineada en naranja.](/assets/images/help/codespaces/new-shell-session.png)

3. 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](/es/codespaces/about-codespaces/deep-dive#about-the-directory-structure-of-a-codespace).

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 su cuenta](/es/codespaces/setting-your-user-preferences/personalizing-github-codespaces-for-your-account#dotfiles) y [Introducción a los contenedores dev](/es/codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration/introduction-to-dev-containers).

### 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.

1. Para abrir la Visual Studio Code Command Palette, presiona <kbd>Comando</kbd>+<kbd>Mayús</kbd>+<kbd>P</kbd> (Mac) o <kbd>Ctrl</kbd>+<kbd>Mayús</kbd>+<kbd>P</kbd> (Windows).

2. Empieza a escribir "configuración de usuario" y, luego, haz clic en **Preferencias: Abrir configuración de usuario (JSON)** .

3. En el archivo `settings.json`, dentro del objeto JSON, agrega una nueva propiedad como la siguiente. Reemplaza `OPERATING-SYSTEM` por el sistema operativo correspondiente (como `linux`, `windows` o `osx`) y `SHELL` por el shell que has instalado.

   ```json copy
   "terminal.integrated.profiles.OPERATING-SYSTEM": {
     "SHELL": {
       "path": "SHELL"
     }
   }
   ```

   Por ejemplo:

   ```json
   "terminal.integrated.profiles.linux": {
    "csh": {
      "path": "csh"
    }
   }
   ```

4. 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 más información, consulta [Personalización de GitHub Codespaces para su cuenta](/es/codespaces/setting-your-user-preferences/personalizing-github-codespaces-for-your-account#settings-sync).

## 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.

1. Para abrir la Visual Studio Code Command Palette, presiona <kbd>Comando</kbd>+<kbd>Mayús</kbd>+<kbd>P</kbd> (Mac) o <kbd>Ctrl</kbd>+<kbd>Mayús</kbd>+<kbd>P</kbd> (Windows).

2. Empieza a escribir "configuración de usuario" y, luego, haz clic en **Preferencias: Abrir configuración de usuario (JSON)** .

3. 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.

   ```json
   "terminal.integrated.defaultProfile.OPERATING-SYSTEM": "SHELL"
   ```

   Por ejemplo:

   ```json copy
   {
      "terminal.integrated.defaultProfile.osx": "zsh",
      "terminal.integrated.defaultProfile.linux": "bash",
      "terminal.integrated.defaultProfile.windows": "PowerShell"
   }
   ```

4. 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 más información, consulta [Personalización de GitHub Codespaces para su cuenta](/es/codespaces/setting-your-user-preferences/personalizing-github-codespaces-for-your-account#settings-sync).

## 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](/es/codespaces/developing-in-a-codespace/using-github-codespaces-with-github-cli#ssh-into-a-codespace) y [Personalización de GitHub Codespaces para su cuenta](/es/codespaces/setting-your-user-preferences/personalizing-github-codespaces-for-your-account#dotfiles). Por ejemplo, el siguiente comando cambia el shell predeterminado a `zsh`.

```shell copy
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.

```shell copy
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](/es/codespaces/about-codespaces/deep-dive#about-the-directory-structure-of-a-codespace).

Por lo general, debes usar un repositorio de dotfiles para configurar shells con tus opciones preferidas. La configuración en tus dotfiles se aplica a todos los codespaces que crees y persiste durante las recompilaciones del contenedor. Para más información, consulta [Personalización de GitHub Codespaces para su cuenta](/es/codespaces/setting-your-user-preferences/personalizing-github-codespaces-for-your-account#dotfiles).

### 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 utilizar la interfaz web de `fish` en un espacio de código. 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`:

1. En un terminal que ejecuta una sesión de `fish`, escribe `fish_config`.

2. En la salida del terminal, usa <kbd>Comando</kbd>+clic o <kbd>Ctrl</kbd>+clic para abrir el vínculo al archivo HTML `web_config`.

   ```shell
   $ fish_config
   Web config started at file:///tmp/web_config60rc9tr3.html
   Hit ENTER to stop.
   ```

3. En el archivo `web_config`, usa <kbd>Comando</kbd>+clic o <kbd>Ctrl</kbd>+clic para abrir el vínculo al puerto reenviado.

   ```html
   <body>
     <p><a href="http://localhost:8000/1b9411c2469e392b96df5e5b28da485b/">Start the Fish Web config</a></p>
   </body>
   ```

## Información adicional

* [Establecimiento de las preferencias del usuario](/es/codespaces/setting-your-user-preferences)
* [Administrar tus codespaces](/es/codespaces/managing-your-codespaces)