Come cambiare la shell predefinita in ZSH - chsh dice "shell non valida"


36

Ho installato ZSH su una mia VM, dove l'ho compilato dal sorgente. La posizione di ZSH è /usr/local/bin/zshquando eseguo le chsh -s /usr/local/bin/zshuscite chsh: /usr/local/bin/zsh is an invalid shell. Ho anche provato questo con sudo. Come posso cambiarlo?



6
@Mikel, no, quella domanda è "Non so chsh" piuttosto che " chshnon funziona per me".
cjm

Risposte:


48

Aggiungi zsh a /etc/shells:

command -v zsh | sudo tee -a /etc/shells

Ora puoi usare chsh per impostare zsh come shell:

sudo chsh -s "$(command -v zsh)" "${USER}"

Consulta questa documentazione: modifica della shell di accesso



3

Innanzitutto, controlla se zshè elencato come shell valida da

cat /etc/shells

Se zshnon è elencato, installarlo. Ad esempio, se si utilizzaapt

sudo apt-get install zsh

Fai di nuovo il passaggio 1 e vedi il percorso di zsh. Nel mio caso, entrambi /usr/bin/zshe /usr/zshsono elencati. Come @ Stéphane Chazelas menzionato nel commento, se ti piace compilare e installare la shell da zero, assicurati di aggiungere il percorso /etc/shells.

Cambia la shell usando

chsh -s /usr/bin/zsh

Dalla pagina man :

-s, --shell SHELLIl nome della nuova shell di accesso dell'utente. Se si imposta questo campo su vuoto, il sistema seleziona la shell di accesso predefinita.

Esci e accedi di nuovo.


Sì, se si installa la shell come parte di un pacchetto del sistema operativo, il pacchetto del sistema operativo in genere aggiungerà la shell /etc/shells. Il punto qui è che se compili e installi manualmente la shell, devi anche aggiungere il percorso a /etc/shellste stesso manualmente.
Stéphane Chazelas,

Buon punto. Stavo pensando a un gestore di pacchetti come 'apt'. Ho modificato la risposta per includere il tuo punto.
Sab Yam,

Questo è essenzialmente ciò che le altre due risposte hanno già detto, però.
Jeff Schaller
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.