Jawaban:
Kecuali Anda menggunakan cygwin sebagai lingkungan multi-pengguna (dalam hal ini gunakan chshseperti yang Anda lakukan pada lingkungan standar.)
Jika tidak, Anda hanya mengubah cygwin.bat untuk menjalankan zsh -l -ibukannya bash --login -idan itu akan berjalan sebagai shell login.
Tentu saja, jika Anda ingin menjalankan beberapa shell dari startup, cukup buat satu set .batfile untuk memuat shell yang berbeda. ( sh, ksh, csh, fishDll)
Saya merasa saya harus memperbarui ini untuk memberikan info tentang melakukan ini tanpa chshtetapi masih melakukannya di ujung Unix. Edit /etc/passwdfile dan ganti kejadian /bin/bashdengan /bin/zsh. (Ini secara efektif apa yang chshakan dilakukan, tetapi dengan cara ini Anda akan melakukannya untuk semua pengguna sekaligus).
mkpasswd -l -p "$(cygpath -H)" > /etc/passwddan mengedit yang baru membuat /etc/passwdberkas
Jika 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:
SYNOPSIS mkpasswd [OPTIONS]... OPTIONS Don't use this command to generate a local /etc/passwd file, unless you really need one. See the Cygwin User's Guide for more information. -c,--current Print current user. DESCRIPTION The mkpasswd program can be used to create a /etc/passwd file. Cygwin doesn't need this file, because it reads user information from the Windows account databases, but you can add an /etc/passwd file, for instance if your machine is often dis‐ connected from its domain controller. Note that this information is static, in contrast to the informa‐ tion automatically gathered by Cygwin from the Windows account databases. If you change the user information on your system, you'll need to regenerate the passwd file for it to have the new information. For very simple needs, an entry for the current user can be cre‐ ated by using the option -c.
(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.
Saya hanya menambahkan bindirektori di direktori cygwin ke Windows Path Environment Variable saya dan kemudian membuat pintasan ke:
mintty.exe -i /Cygwin-Terminal.ico /bin/zsh --login
atau ubah saja pintasan menu awal cygwin menjadi sama.
/bin/zshbukan zsh.
the bin directory in the cygwin directory to my Windows Path Environment Variablebekerja tanpa perubahan ini untuk saya
itidak diperlukan karena akan menjadi shell login dan tidak interactive.
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:
db_shell: / usr / bin / zsh
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:
Jangan gunakan perintah ini untuk menghasilkan file lokal / etc / passwd, kecuali jika Anda benar-benar membutuhkannya. Lihat Panduan Pengguna Cygwin untuk informasi lebih lanjut.
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.
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/zshdan 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 SHELLdengan nilai /usr/bin/zsh. Lalu OK kembali dari semua itu dan mulai mintty baru.
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:
chere -i -t mintty -s zsh