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.