Come rendere ZSH la shell predefinita?


124

Sto cercando di impostare ZSH come shell predefinita, tuttavia continua a tornare a bash.

Ho provato questo codice:

sudo chsh -s $(which zsh)

Ho anche provato:

sudo chsh -s /bin/zsh 

Ho anche provato questi comandi senza sudo. Qualche idea su cos'altro devo fare. Quando esegue ZSH da bash, si carica e funziona benissimo, ma mi piacerebbe impostarlo come shell predefinita.

Risposte:


217

Basta usare chsh:

chsh -s $(which zsh)

senza sudo dovrebbe funzionare. Se lo usi sudocambierà la shell non per l'utente che lavora ma per root

Infine, esci dal computer e accedi nuovamente .

Risoluzione dei problemi:


17
Ho lo stesso problema e la risposta non lo risolve
Aswin Murugesh,

@AswinMurugesh Controlla la mia risposta
Shailesh Kalamkar l'

9
puoi anche eseguire sudo chsh -s / bin / zsh userName
Micha Roon

16
Nota: ho dovuto riavviare il sistema prima che questo avesse effetto.
KevinO,

no, non ha funzionato.
Haha TTpro,

40

L'ho trovato sul forum di superutente

Apri / etc / passwd:

sudo vi /etc/passwd

Trova la riga con il tuo nome utente:

username:x:1634231:100:Your Name:/home/username:/bin/bash

e sostituisci bash con zsh:

username:x:1634231:100:Your Name:/home/username:/bin/zsh

Disconnettersi e riconnettersi per rendere effettive le modifiche.


11
Dovresti stare molto attento con questo approccio - di solito non è la migliore idea di andare in giro con/etc/passwd
Thomas Ward

Anche se non ho usato questo metodo, mi ha aiutato a verificare l'effetto dichsh -s `which zsh`
jchook il

HA Sì, questo totale ha scopato il mio utente. Non riesco ad accedere.
Mark Carpenter Jr

6

Puoi anche farlo:

apri il tuo file bashrc nel tuo editor preferito

sudo nano ~/.bashrc

quindi aggiungi la riga sotto la parte superiore del file

exec zsh

Eseguirà il comando ogni volta che carichi il terminale ed esegui la tua shell zsh.


13
e interromperà anche tutti i lavori non interattivi ( scpad esempio).
Jakuje,

Ci scusiamo per il downvote, ma cambiando /etc/passwdo chshsono soluzioni migliori e più affidabili.
Timo,

Grazie lo ha fatto. @Timo Ho fatto il cambio su / etc / passwd e o chsh ma il mio default continuava a tornare a bash. Ho aggiunto exec zsh come da risposta postata e ha funzionato.
Stryker,

3

Se zsh non è / bin / zsh, chsh non funzionerà. Su Ubuntu è / usr / bin / zsh. così facendo chsh -s /usr/bin/zsho chsh -s `which zsh`dovrebbe funzionare. È inoltre necessario accedere nuovamente alla sessione desktop.


Sul mio VPS Ubuntu è / bin / zsh
Wilhelm Erasmus il

Sul mio Ubuntu, lo vedo in entrambi /bin/zshe/usr/bin/zsh
blue_chip

2
Sul mio (14.04, con zsh dal repository principale), ci sono due zsh e sono entrambi collegamenti simbolici a due livelli: / usr / bin / zsh -> / etc / alternatives / zsh-usrbin -> / bin / zsh5 e / bin / zsh -> / etc / alternatives / zsh -> / bin / zsh5
wjandrea

1

Ho avuto un problema con le autorizzazioni per cambiare shell sotto l'utente corrente, ma poi mi aiuta (dovresti impostare la cartella 'zsh' corretta per il tuo computer):

sudo chsh -s /bin/zsh <myUserName>

0

Strano, la risposta "accettata" non ha funzionato per me come ho ottenuto

chsh: PAM: Authentication failure

Per risolvere questo problema modifica il tuo / etc / passwd e assicurati che punti alla posizione zsh. (Puoi trovarlo eseguendo "quale zsh") Nel mio caso il mio utente chiamato "webmaster" era simile al seguente:

webmaster:x:1001:1001:webmaster,,,:/var/www/webmaster:/usr/bin/zsh

Credo che dovrebbe chiedere una password. Ho avuto lo stesso errore sulla mia precedente installazione di zecca. Quello attuale ha funzionato bene però
Wilhelm Erasmus il

Qualcun altro ha avuto lo stesso problema, e si è scoperto che avevano corso chsh -s zsh, il che ha reso la loro voce passwd errata.
wjandrea,

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.