Wie mache ich ZSH zur Standard-Shell?

124

Ich versuche, ZSH als Standardshell festzulegen, aber es wird immer wieder auf bash zurückgesetzt.

Ich habe diesen Code ausprobiert:

sudo chsh -s $(which zsh)

Ich habe auch versucht:

sudo chsh -s /bin/zsh 

Habe diese Befehle auch ohne sudo ausprobiert. Irgendwelche Ideen, was ich sonst noch tun muss. Wenn Sie ZSH in bash ausführen, wird es geladen und funktioniert einwandfrei, aber ich möchte es als Standard-Shell festlegen.

Tom
quelle

Antworten:

217

Einfach mit chsh:

chsh -s $(which zsh)

ohne sudo sollte funktionieren. Wenn Sie sudoes verwenden, ändert sich die Shell nicht für Ihren Arbeitsbenutzer, sondern für root

Melden Sie sich abschließend von Ihrem Computer ab und wieder an .

Fehlerbehebung:

Florian Diesch
quelle
17
Ich habe das gleiche Problem und die Antwort löst es nicht
Aswin Murugesh
@AswinMurugesh Überprüfen Sie meine Antwort
Shailesh Kalamkar
9
Sie können auch sudo chsh -s / bin / zsh userName
Micha Roon
15
Hinweis: Ich musste mein System neu starten, bevor dies wirksam wurde.
KevinO
Nein, es hat nicht funktioniert.
Haha TTpro
40

Ich habe dies im Superuser- Forum gefunden

Öffne / etc / passwd:

sudo vi /etc/passwd

Suchen Sie die Zeile mit Ihrem Benutzernamen:

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

und ersetze bash mit zsh:

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

Melden Sie sich ab und wieder an, damit die Änderungen wirksam werden.

Shailesh Kalamkar
quelle
11
Sie sollten mit diesem Ansatz sehr vorsichtig sein - es ist normalerweise nicht die beste Idee, sich mit ihm zu beschäftigen/etc/passwd
Thomas Ward
Obwohl ich diese Methode nicht verwendet habe, konnte ich den Effekt vonchsh -s `which zsh`
jchook 30.09.17
HA Ja das total hat meinen User gefickt. Ich kann mich nicht wieder anmelden.
Mark Carpenter Jr
6

Sie können dies auch tun:

öffne deine bashrc Datei in deinem Lieblingseditor

sudo nano ~/.bashrc

Fügen Sie dann die Zeile oben in die Datei ein

exec zsh

Der Befehl wird jedes Mal ausgeführt, wenn Sie das Terminal laden und Ihre zsh-Shell ausführen.

Saddam H
quelle
13
und es wird auch alle Ihre nicht interaktiven Jobs ( scpzum Beispiel) brechen .
Jakuje
Entschuldigen Sie die Ablehnung, aber ändern /etc/passwdoder chshsind bessere Lösungen und zuverlässiger.
Timo
Danke, das hat es geschafft. @Timo Ich habe die Änderung in / etc / passwd und / oder chsh vorgenommen, aber meine Standardeinstellung ist immer wieder auf bash zurückgegangen. Ich fügte hinzu, Exec Zsh nach geposteten Antwort und es hat funktioniert.
Stryker
3

Wenn zsh nicht / bin / zsh ist, funktioniert chsh nicht. Unter Ubuntu ist es / usr / bin / zsh. so tun chsh -s /usr/bin/zshoder chsh -s `which zsh`sollte funktionieren. Sie müssen sich auch erneut bei der Desktopsitzung anmelden.

jbp
quelle
Auf meinem Ubuntu VPS ist es / bin / zsh
Wilhelm Erasmus
Auf meinem Ubuntu sehe ich es in beiden /bin/zshund/usr/bin/zsh
blue_chip
2
In meinem (14.04, mit zsh von main repo) gibt es zwei zshs, und beide sind zweischichtige Symlinks: / usr / bin / zsh -> / etc / alternatives / zsh-usrbin -> / bin / zsh5 und / bin / zsh -> / etc / alternatives / zsh -> / bin / zsh5
wjandrea
1

Ich hatte ein Problem mit der Berechtigung, die Shell unter dem aktuellen Benutzer zu ändern, aber das nächste Mal hilft mir (Sie sollten den richtigen 'zsh'-Ordner für Ihren Computer festlegen):

sudo chsh -s /bin/zsh <myUserName>
Rib47
quelle
0

Seltsamerweise hat die "akzeptierte" Antwort bei mir nicht funktioniert

chsh: PAM: Authentication failure

Um dieses Problem zu beheben, bearbeiten Sie Ihre / etc / passwd und vergewissern Sie sich, dass sie auf den zsh-Speicherort verweist. (Sie finden dies, indem Sie "which zsh" ausführen.) In meinem Fall sah der Benutzer "webmaster" folgendermaßen aus:

webmaster:x:1001:1001:webmaster,,,:/var/www/webmaster:/usr/bin/zsh
John Crawford
quelle
Ich glaube, es soll nach einem Passwort fragen. Ich habe den gleichen Fehler bei meiner vorherigen Neuinstallation erhalten. Die aktuelle Version hat gut funktioniert
Wilhelm Erasmus
Jemand anderes hatte das gleiche Problem, und es stellte sich heraus, dass sie gelaufen waren chsh -s zsh, was ihre Passwd-Eingabe falsch machte.
wjandrea
0

Geben Sie das Terminal ein

sudo chsh -s $(which zsh) root
Valmor Nascimento
quelle