¿Cómo consigo que WSL inicie mi shell de inicio de sesión de forma predeterminada?

¿Cómo consigo que WSL inicie mi shell de inicio de sesión de forma predeterminada?

La aplicación "Bash en Ubuntu en Windows" siempre inicia, bueno, bash. Solía chsh​​​​configurar otro shell como mi shell de inicio de sesión. ¿Cómo consigo que WSL inicie ese shell?

Respuesta1

Esto está arreglado enuna compilación actualmente exclusiva para Insider, con el nuevo wsl.execomando:

A partir de la compilación 16188, cuando se ejecuta bash.exe sin argumentos (o con el argumento ~), bash se iniciará como un shell de inicio de sesión. Lo mismo ocurre con el nuevo binario wsl.exe (con la excepción de que wsl inicia el shell predeterminado de su usuario como un shell de inicio de sesión).

Antes de esto, tendrías que editar el acceso directo para agregar parámetros de línea de comandos (como -c 'exec "$SHELL" -l'):

Respuesta2

Un poco de contexto histórico para cualquiera que intente agregar una nueva respuesta hoy en día. Esta pregunta se hizo originalmente en la época oscura de principios de WSL. En aquel momento:

  • Ubuntu/WSL era conocido como "Bash en Ubuntu en Windows"
  • Fue lanzado mediante el bash.execomando.
  • Élsiemprelanzó el shell Bash

El bash.execomando quedó obsoleto hace un tiempo y se reemplazó con el wsl.execomando que @muru mencionó enesta respuesta.

Ahora, puede cambiar su shell predeterminado/de inicio de sesión a Fish (o normalmente cualquier otro shell) usando los métodos estándar de Ubuntu mencionados, por ejemplo, enesta respuesta. En breve:

  • Asegúrese de que el caparazón esté representado en su/etc/shells
  • chsh -s <path_to_shell>
  • O normalmente,chsh -d $(which fish)

Respuesta3

Para iniciar, por ejemplo, pescar en Ubuntu en WSL, establezca su objetivo en

C:\Windows\system32\wsl.exe --distribution Ubuntu --exec fish

información relacionada