Jawaban:
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
berkas
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 bin
direktori 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/zsh
bukan zsh
.
the bin directory in the cygwin directory to my Windows Path Environment Variable
bekerja tanpa perubahan ini untuk saya
i
tidak 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/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.
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