Come modificare la shell predefinita per il sistema operativo Linux per Windows


10

Ho installato il sottosistema Linux per Windows 10. Funziona bene, ma voglio cambiare l'ambiente di shell predefinito per il sottosistema.

L'ho fatto sudo apt-get install fishe poi chsh -s /usr/bin/fish. Ma quando avvio bash.exein Windows, inizia sempre la bash (penso che sia prevedibile).

Qualcuno conosce argomenti per cambiare questo comportamento?


Quando si avvia bash.exestate, ovviamente, in modo esplicito agli inizi bash. Non ho familiarità con il sottosistema Linux in Windows 10, ma mi aspetto che ci sia un modo per avviare una shell "Linux" senza avviare esplicitamente una shell specifica.
un CVn

Hai provato una brutta edizione del tuo bashrc o bashprofile per reindirizzare le chiamate interattive bash ai pesci? L'aggiunta di una linea come isatty && exec fishpuò valere la pena provare quando si è completamente fuori dalle soluzioni reali.
A. Loiseau,

Risposte:


6

Non è possibile modificare la shell predefinita di per sé poiché il sottosistema Linux viene avviato tramite bash.exe che risiede nella directory di sistema.

Puoi, tuttavia, creare una nuova scorciatoia come quella già esistente per bash e farla eseguire il comando

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

In questo modo eseguirai immediatamente il pesce.


1
Ho usato %systemroot%\system32\bash.exe ~ -c /bin/zshper fare ZSH aperta nella mia home directory.
David Pärsson,

In alternativa, impostare il campo "Avvia in" nel collegamento su %userprofile%per avviare la shell nella directory home.
dOxxx,

@konqui Questo non rompe nessun altro guscio. È una nuova scorciatoia per avviarlo. Il tuo bash funzionerà perfettamente
Sami Kuhmonen,

@SamiKuhmonen non c'era nulla di detto su una nuova scorciatoia - l'ho corretto ora posso vivere con questa risposta.
konqui,

9

Da Fall Creators Update è possibile utilizzare chshper impostare la shell predefinita. Questo non funziona ancora se si esegue WSL utilizzando il bash.execomando, ma funziona se si esegue WSL con ubuntu.execomando.

Inoltre, da Fall Creators Update dovremmo installare il sistema operativo WSL da Windows Store .

Imposta zshcome shell predefinita:

chsh -s /bin/zsh

quindi esegui (o riavvia) ubuntu.exedal prompt dei comandi.


5

Apri bash, eseguilo nano ~/.bashrce incollalo in:

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

Basta cambiare la shell fisho quello che vuoi. Il -xcontrollo è importante se si reinstalla Bash: non sarà possibile aprirlo dopo una nuova installazione perché il execcomando non riuscirà e quindi Bash si chiuderà.

In tal caso, elimina / rinomina il tuo .bashrcfile qui:

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

Il -tIo credo controlla se stdout è aperto. Non sono sicuro del perché sia ​​importante, l'ho copiato da questo articolo .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.