Bagaimana saya bisa mengkonfigurasi zsh menjadi shell default di bawah Cygwin?
Kecuali Anda menggunakan cygwin sebagai lingkungan multi-pengguna (dalam hal ini gunakan chsh
seperti yang Anda lakukan pada lingkungan standar.)
Jika tidak, Anda hanya mengubah cygwin.bat untuk menjalankan zsh -l -i
bukannya bash --login -i
dan itu akan berjalan sebagai shell login.
Tentu saja, jika Anda ingin menjalankan beberapa shell dari startup, cukup buat satu set .bat
file untuk memuat shell yang berbeda. ( sh
, ksh
, csh
, fish
Dll)
Saya merasa saya harus memperbarui ini untuk memberikan info tentang melakukan ini tanpa chsh
tetapi masih melakukannya di ujung Unix. Edit /etc/passwd
file dan ganti kejadian /bin/bash
dengan /bin/zsh
. (Ini secara efektif apa yang chsh
akan dilakukan, tetapi dengan cara ini Anda akan melakukannya untuk semua pengguna sekaligus).
mkpasswd -l -p "$(cygpath -H)" > /etc/passwd
dan mengedit yang baru membuat/etc/passwd
berkasJika saya membaca pertanyaan Anda dengan benar, Anda sedang mencari sesuatu yang lain dari pada apa persediaan chere (yang, memang, cukup keren dalam dirinya sendiri).
Versi Cygwin saat ini tidak memiliki file / etc / passwd , dan sistem yang sedang saya kerjakan memiliki informasi akun Windows dalam database domain di luar kendali saya. Akibatnya, chsh tidak lagi didukung.
Saya juga menemukan bahwa bash bukan hard-coded ke dalam skrip startxwin , juga bukan hard-coded pada file .bat. Ternyata Anda tidak perlu mengutak-atik file .bat sama sekali.
Mencari cara mengganti shell saya, saya menemukan beberapa saran tentang mkpasswd
Saya menambahkannya ke dalam campuran.
Halaman manual mengatakan:
(Saya tidak tahu mengapa jaraknya sangat "tidak aktif" ...)
Saya kemudian menggunakan perintah berikut:
mkpasswd -c | sed -e 'sX / bashX / zshX' | tee -a / etc / passwd
Lain kali Anda membuka Terminal Cygwin, itu akan langsung menuju zsh
Dan itu, saya pikir, adalah apa yang Anda minta.
sumber
Saya hanya menambahkan
bin
direktori di direktori cygwin ke Windows Path Environment Variable saya dan kemudian membuat pintasan ke:atau ubah saja pintasan menu awal cygwin menjadi sama.
sumber
/bin/zsh
bukanzsh
.the bin directory in the cygwin directory to my Windows Path Environment Variable
bekerja tanpa perubahan ini untuk sayai
tidak diperlukan karena akan menjadi shell login dan tidakinteractive
.Disalin dari jawaban saya di Stack Overflow :
Alih-alih membuat file passwd, yang direkomendasikan Cygwin terhadap 1 , Anda bisa mengedit /etc/nsswitch.conf . Tambahkan atau edit baris berikut:
Sisi bawah / atas dari metode ini adalah bahwa, jika Anda memiliki banyak pengguna, perubahan ini mempengaruhi semuanya. Sisi atas / atas adalah bahwa itu sangat sederhana. Satu-satunya tangkapan adalah Anda harus memulai ulang Cygwin.
Jika Anda melakukan penggunaan mkpasswd setelah perubahan ini, ia akan menggunakan shell default baru Anda untuk semua pengguna yang diizinkan untuk log on.
1 Dokumentasi mkpasswd mengatakan ini:
Saya tidak dapat menemukan alasan yang kuat dalam panduan pengguna , selain dari penyebutan bahwa Anda harus membuat ulang file / etc / passwd dan / etc / group jika pengguna dan grup Anda berubah, yang menurut saya cukup baik alasan. Saya dapat mengatakan bahwa prosesnya agak rawan kesalahan untuk pemula.
sumber
Dengan anggapan Anda tertarik untuk mengganti shell yang digunakan dalam mintty / Cygwin Terminal, pertama-tama memeriksa variabel lingkungan SHELL, kemudian file passwd (sekarang tidak ada), kemudian jatuh kembali ke / bin / sh, yang sepertinya dilakukan. secara default.
Saya bisa mengatur variabel lingkungan SHELL pada Windows untuk
/usr/bin/zsh
dan bekerja tanpa perubahan lain. Saya baru saja mengubahnya untuk pengguna Windows saya, bukan secara global.Mengatur variabel lingkungan mungkin bervariasi untuk berbagai versi Windows. Coba cari "lingkungan" di Panel Kontrol Windows Anda. Bagi saya, di bawah Windows 7, itu adalah Control Panel → System → Advanced System Settings, yang memunculkan panel / dialog kontrol System Properties, lalu tab Advanced, kemudian tombol Environment Variables, yang memunculkan dialog Environment Variables, kemudian buat variabel pengguna baru dinamai
SHELL
dengan nilai/usr/bin/zsh
. Lalu OK kembali dari semua itu dan mulai mintty baru.sumber
Saya pikir saya akan menambahkan jawaban ini jika itu membantu siapa saja yang mencarinya. Jika Anda menggunakan chere (yang menambahkan opsi "Bash prompt di sini" ke menu konteks klik kanan folder mana pun), Anda dapat mengaturnya ke zsh ("Zsh Prompt Here") dengan:
sumber
Jika Anda ingin menggunakan shell Cygwin di dalam IDE Intellij, kemudian gunakan pengaturan berikut di dalam pengaturan / alat / terminal
Ini akan menanamkan shell cygwin di dalam intellij alih-alih menelurkan jendela baru
sumber