Bagaimana cara mengubah Shell Login pada Mac OS X dari bash ke zsh?

90

Saya mencoba mengubah Shell Login Mac OS X dari bashmenjadi zsh. Saya melihat itu mungkin di Mac OS X Leopard , tetapi untuk OS X Lion saya tidak dapat menemukan jalan. Saya sangat berharap dimungkinkan untuk mengubah shell Login dari bash ke sesuatu yang lain. Saya tidak yakin ke mana harus mencari.

Idlecool
sumber
Setelah mengganti shell ke zsh, saya masih harus meluncurkan zsh secara manual. Keluar tidak membantu. Saya kemudian mengubah zsh ke shell login paling atas. Keluar dan itu dia.
1
Jika tidak ada yang lain, Anda selalu dapat memodifikasi .bashrc untuk menemukan dan mengeksekusi zsh. if [ -x /usr/local/bin/zsh ] ; then exec /usr/local/bin/zsh fi. Petunjuk, saat memodifikasi skrip startup shell, pastikan shell tetap berjalan dan mulai yang baru di jendela lain - jika Anda memecahkannya Anda masih memiliki tempat yang mudah untuk memperbaikinya.
Dan Pritts

Jawaban:

101

Anda dapat mengubah shell pengguna dengan perintah berikut:

chsh -s /bin/zsh

Catatan: Untuk mengubahnya untuk shell non-standar, pastikan pathnya telah ditambahkan ke /etc/shellsfile.

Spiff
sumber
4
Saya menginstal versi zsh yang lebih baru dengan Homebrew, yang memasukkan zsh /usr/local/bin/zsh. Sayangnya, chsh tidak mengizinkan ini, mengatakan chsh: /usr/local/bin/zsh: non-standard shell. Jawaban Daniel Beck adalah solusi yang cocok dalam kasus ini.
adam_0
43
Jika Anda mendapatkan masalah dengan kerang non-standar, saya pikir Anda harus dapat menambahkan /usr/local/bin/zshuntuk /etc/shellsdan harus mengatasi masalah tersebut.
Mike Meyers
13
Info instal zsh homebrew sebenarnya merekomendasikan Anda untuk menambahkannya ke / etc / shells: ==> Caveats To use this build of Zsh as your login shell, add it to /etc/shells.
George
Terkadang tidak bekerja. @ frank menjawabnya memastikan
oliverbarnes
1
@Awesome_girl Secara default, /etc/shellsdimiliki, dan hanya dapat ditulisi oleh, root (superuser). Anda bisa, misalnya, menggunakan sudo vi /etc/shellsmenggunakan sudo( s uper u ser jangan ) untuk menjalankan vieditor untuk mengedit /etc/shells. Saya baru saja menguji pada sistem saya dan mengkonfirmasi bahwa itu TIDAK dilindungi oleh Perlindungan Integritas Sistem, jadi Anda harus dapat mengeditnya sebagai root tanpa melompat melalui lingkaran untuk menonaktifkan SIP.
Spiff
54

Lucunya, metode yang sama yang Anda tautkan dalam pertanyaan Anda masih berfungsi di OS X Lion melalui Sierra (10.12). Satu-satunya perbedaan: Panel preferensi bernama Pengguna & Grup, bukan Akun .

  1. Buka "System Preferences" → "Users & Groups".
  2. Kecuali ikon kunci sudah dibuka, klik ikon kunci dan autentikasi diri Anda.
  3. Klik konteks pada pengguna dalam daftar nama pengguna (tahan Controltombol sambil mengklik, atau klik kanan pada mouse dua tombol tangan kanan).
  4. Di menu konteks, pilih "Opsi Lanjutan ...".
  5. Pilih "Login shell" di lembar yang muncul.

Catatan di bagian atas layar "Opsi Lanjutan" menyatakan Anda harus memulai ulang agar perubahan berlaku, tetapi Anda benar-benar hanya perlu keluar dan kembali lagi.

masukkan deskripsi gambar di sini

Daniel Beck
sumber
1
Dikonfirmasi bahwa ini berfungsi di Mountain Lion, serta bekerja dengan "cangkang non-standar" yang mungkin Anda pasang sendiri (atau minta Homebrew menginstal).
adam_0
2
Dikonfirmasi masih bekerja di 10.10 Yosemite.
ecnepsnai
4
klik kanan pada nama pengguna untuk membuka menu yang berisi "opsi lanjutan". Saya butuh beberapa menit untuk menemukannya.
pdwalker
1
Mengapa memaksa seseorang untuk pergi ke luar kantor untuk mengumpulkan semua informasi sebelum dapat menjawabnya? Oleh karena itu komentar dalam kasus orang lain membuat asumsi yang sama bahwa jawabannya ada di sini daripada di sana-sini.
pdwalker
1
@ jvriesem Sebenarnya, itu benar. Dugaan saya adalah Anda melewatkan langkah 2.
Daniel Beck
11

Atau:

sudo dscl . change /users/$USER UserShell /bin/bash $(which zsh)
jujur
sumber
3
Bisakah Anda menjelaskan mengapa ini menjawab pertanyaan?
ChrisF
Pastikan untuk menjalankan ini setelahnya brew install zsh .
mmell
3
Juga, berhati-hatilah karena jalur zsh yang diinstal melalui homebrew berbeda. Saya melakukannya sebagai:sudo dscl . change /users/$USER UserShell /bin/bash $(which zsh)
metakermit
1
PERINGATAN: Ini akan menghancurkan shell Anda jika Anda menyalin / menempelkannya tanpa memeriksa jalur zsh terlebih dahulu. Lakukan apa yang dikatakan metakermit.
radixhound
1

Jika ada yang bertanya-tanya masalah yang sama terjadi pada macOS Sierra dan perintah berikut memungkinkan saya untuk mengganti shell tanpa masalah:

chpass -s /usr/local/bin/zsh
Maxim Ligus
sumber
1
Ini menggandakan jawaban lain dan tidak menambahkan konten baru. Tolong jangan memposting jawaban kecuali Anda benar-benar memiliki sesuatu yang baru untuk disumbangkan. "chfn dan chsh adalah sinonim untuk chpass."
DavidPostill