Bagaimana cara mengganti shell default di Cygwin?

29

Saya mencoba mengubah shell default saya dari bash ke zsh di cygwin.

  1. Perintah unix normal chshtidak tersedia di cygwin
  2. File etc / passwd tampaknya tidak digunakan lagi di versi cygwin yang ada.

Jadi bagaimana lagi shell default dapat diubah?

gyaani_guy
sumber

Jawaban:

22

Jawabannya tergantung pada bagaimana Anda memulai Cygwin.

Jika Anda memulai Cygwin dengan Cygwin.bat , ubah baris terakhir /Cygwin.bat(biasanya C:\cygwin\atau C:\cygwin64\).

Jika Anda memulai Cygwin dengan mintty , lalu tambahkan shell sebagai parameter. mintty /usr/bin/zsh -

Steven
sumber
2
Terima kasih, saya menggunakan Conemu. Harus mengubah sh.exeke zsh.exedalam Conemu Pengaturan> startup> tugas> bash Cygwin Bash>set CHERE_INVOKING=1 & %ConEmuDrive%\CygWin\bin\sh.exe --login -i
gyaani_guy
@gyaani_guy Saya hanya menggunakan ConEmu untuk mengeksekusi CygWin\bin\zsh.exe. sh.exe --loginakan meluncurkan Bash, bagaimana Anda mengubahnya? Atau apakah itu tidak penting? Saya membayangkan sh.exe --logintidak perlu mengeksekusi shsebelum zsh...
deed02392
@ deed02392 Saya tidak yakin saya mengerti .. tetapi perintah yang tepat saya gunakan adalah set CHERE_INVOKING=1 & %ConEmuDrive%\CygWin\bin\zsh.exe --login -ihth
gyaani_guy
@ gyaani_guy terima kasih, saya bingung karena di komentar pertama Anda, Anda sepertinya menyiratkan bahwa Anda memulai zsh sh.exe. Sekarang saya sadar bahwa saya tidak membaca pesan Anda dengan benar :-)
deed02392
3
Contoh permen tidak cukup untuk saya. Itu memiliki masalah sampai saya membuatnya menjadi shell login dengan menambahkan -l: mintty.exe -i /Cygwin-Terminal.ico /usr/bin/zsh -l -
Morgan
18

Jika Anda menjalankan mintty.exelangsung atau menjalankan Terminal Cygwin dari menu awal atau desktop (yang merupakan jalan pintas ke mintty.exe), Anda dapat mengatur variabel lingkungan SHELL di Windows /usr/bin/zsh.

Di Windows 7:

  1. Tekan tombol Windows.
  2. Mulai mengetik "lingkungan".
  3. Saat muncul, pilih "Edit variabel lingkungan untuk akun Anda".

Sisanya harus jelas.

dc46and2
sumber
5
Ini serius membutuhkan lebih banyak suara. Saya belum pernah melihat ini didokumentasikan di mana pun, dan itu jelas metode yang dimaksudkan.
Kevin Mills
1
Bagi mereka yang tidak ingin mengandalkan pencarian untuk menemukan panel yang sesuai, klik kanan menu Start dan pilih "Sistem" untuk meluncurkan panel kontrol Sistem. Kemudian klik "Pengaturan sistem lanjutan" dari kolom sebelah kiri. Pada jendela "System Properties" yang muncul, klik "Variabel Lingkungan ..." untuk meluncurkan editor variabel lingkungan.
David C.
Bekerja dengan sempurna!
bkunzi01
16

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 / fish

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.

P Ayah
sumber
7

Ini adalah retasan: taruh ini sebagai baris pertama dari Anda ~/.bash_profile:

exec zsh
glenn jackman
sumber