Comment changer le shell par défaut du sous-système Linux pour Windows

10

J'ai installé le sous-système Linux pour Windows 10. Cela fonctionne bien, mais je veux changer l'environnement shell par défaut pour le sous-système.

Je l'ai fait sudo apt-get install fishet ensuite chsh -s /usr/bin/fish. Mais quand je démarre bash.exesous Windows, ça démarre toujours le bash (je pense que c'est prévisible).

Quelqu'un connaît-il des arguments pour changer ce comportement?

Envie
la source
Lorsque vous démarrez, vous démarrez bash.exeévidemment explicitement bash. Je ne connais pas le sous-système Linux dans Windows 10, mais je m'attendrais à ce qu'il y ait un moyen de démarrer un shell "Linux" sans démarrer explicitement un shell spécifique.
un CVn
Avez-vous essayé une édition laide de votre bashrc ou bashprofile pour réacheminer les appels bash interactifs aux poissons? Ajouter une ligne comme cela isatty && exec fishpeut valoir la peine d'essayer lorsque vous êtes totalement à l'écart des solutions réelles.
A. Loiseau

Réponses:

6

Vous ne pouvez pas modifier le shell par défaut en soi car le sous-système Linux est démarré via le bash.exe résidant dans le répertoire système.

Vous pouvez cependant créer un nouveau raccourci comme celui qui existe déjà pour bash et lui faire exécuter la commande

%systemroot%\system32\bash -c /usr/bin/fish

De cette façon, vous exécuterez immédiatement du poisson.

Sami Kuhmonen
la source
1
J'avais l'habitude %systemroot%\system32\bash.exe ~ -c /bin/zshd'ouvrir ZSH dans mon répertoire personnel.
David Pärsson
Sinon, définissez le champ "Démarrer dans" dans le raccourci sur %userprofile%pour démarrer le shell dans votre répertoire personnel.
dOxxx
@konqui Cela ne casse aucun autre shell. C'est un nouveau raccourci pour le démarrer. Votre bash fonctionnera très bien
Sami Kuhmonen
@SamiKuhmonen il n'y avait rien dit à propos d'un nouveau raccourci - je l'ai corrigé maintenant je peux vivre avec cette réponse.
konqui
9

Depuis Fall Creators Update, vous pouvez utiliser chshpour définir le shell par défaut. Cela ne fonctionne toujours pas si vous exécutez WSL à l'aide de la bash.execommande, mais cela fonctionne si vous exécutez WSL avec la ubuntu.execommande.

De plus, depuis Fall Creators Update, nous devons installer WSL OS à partir du Windows Store .

Définir zshcomme shell par défaut:

chsh -s /bin/zsh

puis exécutez (ou redémarrez) à ubuntu.exepartir de l'invite de commande.

Mikhail
la source
5

Ouvrez bash, exécutez nano ~/.bashrcet collez ceci dans:

if [[ -t 1 && -x /usr/bin/zsh ]]; then
    exec /usr/bin/zsh
fi

Changez simplement le shell en fishou ce que vous voulez. La -xvérification est importante si vous réinstallez jamais Bash - vous ne pourrez pas l'ouvrir après une nouvelle installation car la execcommande échouera, puis Bash se fermera.

Si cela se produit, supprimez / renommez votre .bashrcfichier ici:

C:\Users\<USERNAME>\AppData\Local\lxss\home\<USERNAME>\.bashrc

Le -tje crois vérifie si stdout est ouvert. Je ne sais pas pourquoi c'est important, je l'ai copié de cet article .

mpen
la source