Bagaimana menjadikan ZSH sebagai shell default?


124

Saya mencoba menetapkan ZSH sebagai shell default saya, namun tetap mengembalikan kembali ke bash.

Saya sudah mencoba kode ini:

sudo chsh -s $(which zsh)

Saya juga sudah mencoba:

sudo chsh -s /bin/zsh 

Juga mencoba perintah ini tanpa sudo. Ada ide tentang apa lagi yang perlu saya lakukan. Ketika menjalankan ZSH dari dalam bash itu memuat dan berfungsi dengan baik, tetapi saya ingin mengaturnya sebagai shell default.

Jawaban:


217

Hanya menggunakan chsh:

chsh -s $(which zsh)

tanpa sudo harus bekerja. Jika Anda menggunakannya sudoakan mengubah shell bukan untuk pengguna Anda yang bekerja tetapi untuk root

Akhirnya, keluar dari komputer Anda dan masuk kembali .

Penyelesaian masalah:


17
Saya memiliki masalah yang sama dan jawabannya tidak menyelesaikannya
Aswin Murugesh

@AswinMurugesh Periksa jawaban saya
Shailesh Kalamkar

9
Anda juga dapat menjalankan sudo chsh -s / bin / zsh userName
Micha Roon

15
Catatan: Saya harus memulai ulang sistem saya sebelum ini berlaku.
KevinO

tidak, itu tidak berhasil.
Haha TTpro

40

Saya menemukan ini di forum pengguna super

Buka / etc / passwd:

sudo vi /etc/passwd

Temukan baris dengan nama pengguna Anda:

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

dan ganti bash dengan zsh:

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

Logout dan login kembali agar perubahan diterapkan.


11
Anda harus sangat berhati-hati dengan pendekatan ini - biasanya bukan ide terbaik untuk bermain-main dengan/etc/passwd
Thomas Ward

Meskipun saya tidak menggunakan metode ini, itu membantu saya memverifikasi efekchsh -s `which zsh`
jchook

HA Ya total ini kacau pengguna saya. Tidak dapat masuk kembali.
Mark Carpenter Jr

6

Anda juga dapat melakukan ini:

buka file bashrc Anda di editor favorit Anda

sudo nano ~/.bashrc

kemudian tambahkan baris di bawah bagian atas file

exec zsh

Ini akan menjalankan perintah setiap kali Anda memuat terminal dan menjalankan zsh shell Anda.


13
dan itu juga akan merusak semua pekerjaan non-interaktif Anda ( scpmisalnya).
Jakuje

Maaf untuk downvote, tetapi mengubah /etc/passwdatau chshsolusi yang lebih baik dan lebih dapat diandalkan.
Timo

Terima kasih sudah melakukannya. @Timo Saya melakukan perubahan pada / etc / passwd dan atau chsh tapi default saya tetap kembali ke bash. Saya menambahkan exec zsh sesuai respons yang diposting dan itu berhasil.
Stryker

3

Jika zsh bukan / bin / zsh maka chsh tidak akan berfungsi. Di Ubuntu itu adalah / usr / bin / zsh. melakukan chsh -s /usr/bin/zshatau chsh -s `which zsh`seharusnya bekerja. Juga perlu masuk kembali ke sesi desktop.


Pada VPS Ubuntu saya ini / bin / zsh
Wilhelm Erasmus

Di Ubuntu saya, saya melihatnya di keduanya /bin/zshdan/usr/bin/zsh
blue_chip

2
Di tambang (14,04, dengan zsh dari repo utama), ada dua zsh, dan keduanya merupakan symlink dua lapis: / usr / bin / zsh -> / etc / alternative / zsh-usrbin -> / bin / zsh5 dan / bin / zsh -> / etc / alternative / zsh -> / bin / zsh5
wjandrea

1

Saya memiliki masalah dengan izin untuk mengganti shell di bawah pengguna saat ini tetapi selanjutnya membantu saya (Anda harus mengatur folder 'zsh' yang benar untuk komputer Anda):

sudo chsh -s /bin/zsh <myUserName>

0

Aneh, jawaban yang "diterima" tidak berhasil bagiku

chsh: PAM: Authentication failure

Untuk mengatasi masalah ini, edit / etc / passwd Anda dan pastikan itu menunjuk ke lokasi zsh. (Anda dapat menemukan ini dengan menjalankan "which zsh") Dalam kasus saya, pengguna saya disebut "webmaster" tampak seperti ini:

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

Saya percaya itu seharusnya meminta kata sandi. Saya mendapat kesalahan yang sama pada instalasi mint saya sebelumnya. Yang sekarang berfungsi dengan baik
Wilhelm Erasmus

Orang lain memiliki masalah yang sama, dan ternyata mereka telah berlari chsh -s zsh, yang membuat entri passwd mereka salah.
wjandrea

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.