Skip to main content

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

  1. Si no puedes ver el terminal integrado en VS Code, presiona Ctrl+`.

  2. A la derecha del icono 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 resaltada en naranja.

  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 vas a usar la imagen de codespace predeterminada, busca 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 obtener más información, vea «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 obtener más información, vea «Personalizing GitHub Codespaces for your account» 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.

  1. Para abrir la Visual Studio Code Command Palette, presiona Comando+Mayús+P (Mac) o Ctrl+Mayús+P (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
    "terminal.integrated.profiles.OPERATING-SYSTEM": {
      "SHELL": {
        "path": "SHELL"
      }
    }
    

    Por ejemplo:

    "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 obtener más información, vea «Personalizing GitHub Codespaces for your account».

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.

Nota: 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 Comando+Mayús+P (Mac) o Ctrl+Mayús+P (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.

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

    Por ejemplo:

    JSON
    {
       "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 obtener más información, vea «Personalizing GitHub Codespaces for your account».

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 obtener más información, vea «Uso de GitHub Codespaces con la CLI de GitHub» y «Personalizing GitHub Codespaces for your account». Por ejemplo, el siguiente comando cambia el shell predeterminado a zsh.

Shell
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
sudo apt-get update -y
sudo apt-get install -y csh
sudo chsh "$(id -un)" --shell "/usr/bin/csh"

Nota: Si creas un nuevo codespace (por ejemplo, mediante gh codespace create), debes esperar 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 obtener más información, vea «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 obtener más información, vea «Personalizing GitHub Codespaces for your account».

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:

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

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