Saya baru saja mengalami masalah ini. Untuk menjalankan zsh, saya melakukan ini:
- MSYS2 yang diinstal
- Dari direktori saya menginstal MSYS2, saya berlari
mingw32_shell.bat
- Meningkatkan semua paket yang diinstal dengan menjalankan
pacman -Syu
- Menginstal zsh dan curl dengan menjalankan
pacman -Sy zsh curl
- Tutup cangkang MinGW dengan menjalankan
exit
- Saya tidak zsh
segera menjalankan setelah instalasi.
- Edit msys2_shell.bat, mingw32_shell.bat, dan mingw64_shell.bat dan ubah setiap instance dari:
start %WD%mintty -i /msys2.ico /usr/bin/bash --login %*
menjadi:
start %WD%mintty -i /msys2.ico /usr/bin/zsh --login %*
(on line 39 pada 2015-09-23)
- Ran
mingw32_shell.bat
- Pada menu konfigurasi zsh saya memilih
0
untuk membuat file .zshrc.
Ketika konfigurasi selesai saya melihat:
zsh-newuser-install:1119: command not found: rm
Yang tidak beres ... karena rm
seharusnya tidak pernah ditemukan pada sistem * nix yang sehat (saya kira itu adalah bug dengan paket zsh MSYS2), tetapi semuanya berjalan dengan baik setelah itu.
Pertama kali saya mencoba ini ketika saya menjalankan membuka file batch untuk membuat sesi baru saya menerima kesalahan tentang ruang memori zsh sudah ditempati. Untuk memperbaiki ini, saya menutup semua jendela MinTTY yang terbuka dan menjalankan autorebase.bat
file di direktori instalasi MSYS2. Segalanya berhasil setelah itu.
Kemudian saya menginstal oh-my-zsh. Menggunakan:
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
rm
sebenarnya sangat tidak bersalah. Akhir/usr/share/zsh/functions/Newuser/zsh-newuser-install
skrip berisirm -f $tmpfile*
untuk membersihkan setelah itu sendiri. Persis sama dengan saat menginstal Fedora saya/usr/share/zsh/5.7.1/functions/zsh-newuser-install
.Saya mengalami ini menggunakan msys2-launcher yang lebih baru, yang menyediakan
.exe
launcher daripada file batch.Untuk ini, itu hanya masalah mengubah
.ini
file bersama peluncur di dalam direktori root Msys2 (untuk instalasi 64-bit, mungkin berisimsys2.ini
,mingw32.ini
danmingw64.ini
). Untuk masing-masing file ini, tambahkan baris untuk mengatur shell:sumber
zsh
sebagai shell. Untuk mengatur oh-my-zsh kita mungkin mempertimbangkan metode ini -skel
bagian ini tidak benar-benar berlaku untuk msys2 sejauh yang saya lihat.Edit
/etc/nsswitch.conf
, dan ubah pengaturan di bawah ini:sumber
msys2_shell.cmd
file bat, tetapi mengubahnya dalam.cmd
file tidak mempengaruhi shell jika Anda harus mulai dari salah satu dari.exe
sKetika mengganti shell default tidak didukung, salah satu cara untuk menggunakan shell yang Anda suka adalah segera memulainya ketika shell default dimulai.
Sebagai contoh, hanya menulis
zsh
untuk~/.bashrc
, dan ketika pesta dimulai, itu akan berjalan zsh untuk Anda. Bagaimana pun proses bash nyasar dibiarkan berjalan, dan Anda harus keluar dari shell dua kali saat logout. Untuk membuatnya lebih baik, tulisexec zsh
alih-alihzsh
, dengan cara ini, proses bash sepenuhnya diganti dengan proses zsh.Metode ini tidak sempurna tetapi harus bekerja dengan baik dalam banyak kasus. Dibandingkan dengan mengubah nilai-nilai hard-coded, ini dapat menyebabkan lebih sedikit masalah kompatibilitas.
Pertama kali disebutkan dalam jawaban ini di StackOverflow .
sumber
My install tidak tidak memiliki file yang disebutkan dalam jawaban yang diterima (
msys2_shell.bat
,mingw32_shell.bat
, danmingw64_shell.bat
).Sebaliknya sistem Win10 saya menginstal MSYS2 (menggunakan file installer
msys2-x86_64-20161025.exe
) memiliki file tunggal,msys2_shell.cmd
dengan baris:Saya berubah
bash
menjadizsh
. Tampaknya bekerja sejauh ini.sumber
.exe
file maka ini tidak akan mengatur shell, untuk itu lihat jawaban Alan PearceSaya punya solusi tetapi mengharuskan Anda menggunakan ConEmu daripada terminal apa pun yang saat ini Anda gunakan. Cobalah, menurut saya, ini adalah aplikasi terminal terbaik di windows.
Pertama-tama, Anda harus menginstal zsh menggunakan pacman. Saya kira Anda sudah sejauh itu. Kemudian, Anda harus menginstal ConEmu (yang dapat Anda lakukan dengan Chocolatey atau hanya dengan mengunduh installer dari situs conemu). Di pengaturan ConEmu, di bawah 'Tugas', Anda harus menambahkan tugas baru. Mungkin sudah memiliki satu panggilan
Bash::Msys2-64
atau sesuatu seperti itu, jadi mungkin Anda akan membuat satu panggilanZsh::Msys2-64
. Bagaimanapun nama itu arbitrer. Di kotak 'Perintah' untuk tugas baru ini, Anda pada dasarnya dapat menyalin perintah dariBash::Msys2-64
dan mengganti yangzsh.exe
sesuai. Milik saya seperti:Kemudian, dalam opsi 'Startup' ConEmu, Anda dapat mengatur ini sebagai tugas startup Anda sehingga membuka ConEmu membuat Anda langsung masuk ke Zsh Anda setiap saat. Jelas Anda juga dapat mengatur kombo kunci untuk membukanya atau tugas lain di tab baru atau apa pun yang Anda inginkan. ConEmu memiliki banyak opsi, jadi saya yakin Anda dapat mengaturnya sesuka Anda.
sumber
MSYS2 devs jelas terus mengubah pengaturannya, karena pada instalasi terbaru ,
msys2_shell
perintah yang diinstal pada Windows untuk meluncurkan lingkungan MSYS2 menerima-shell
argumen.Jadi, untuk menggunakan shell yang berbeda, Anda dapat mengedit Properties dari satu atau lebih launcher untuk MSYS2 / MinGW 32 / MinGW 64, dan memperbarui Target untuk ditambahkan
-shell zsh
atau apa pun. (Jika shell$PATH
untuk lingkungan MSYS cukup, Anda tidak perlu path lengkap.)Jadi, untuk mis. Peluncur "MSYS2 MinGW 64-bit" di "MSYS2 64bit" pada menu Mulai Win7 saya:
Tampaknya itu cara termudah dan paling kompatibel untuk beralih secara permanen, karena perubahan Anda tidak akan terhapus oleh peningkatan atau apa pun.
Anehnya peluncur tidak menghormati variabel lingkungan, entri registri, dll. Kecuali jika
-shell
dilewatkan pada baris perintah untuk menimpanya,LOGINSHELL=bash
default yang awalnya dipaksakan akan digunakan.sumber
EDIT: Di bawah ini berlaku untuk versi MSYS2 sebelumnya. Pada 2020-01-21, tidak diperlukan lagi. Jawaban FeRD tampaknya bekerja paling baik.
Saya ingin menggunakan ikan, bukan bash. Sayangnya sebagian besar metode di sini tidak berhasil, mungkin karena sintaksis ikan sangat berbeda.
Apa yang paling berhasil adalah ide wzhd tentang berlari
exec fish
sebagai hal pertama ketika bash dimulai. Namun masih ada masalah: Jika saya ingin menggunakan bash, saya harus mengedit.bashrc
untuk menghapus baris itu karena meskipun saya menjalankannya dari ikan, itu hanya akan memulai contoh ikan lain.Hal terbaik untuk dilakukan adalah memastikan bahwa
exec fish
berjalan ketika msys2 dimulai, tetapi tidak setiap kali bash dimulai.Cara saya temukan adalah melalui file
msys2_shell.cmd
di folder instalasi msys2. Saya menemukan baris-baris ini:Tampaknya mereka mendefinisikan parameter untuk diteruskan ke bash segera setelah dimulai, tetapi hanya ketika skrip ini berjalan (tidak seperti
.bashrc
). Jadi saya menambahkan baris ini tepat setelah:Segalanya tampak baik-baik saja sejauh ini. Memulai msys2 menggantikan bash dengan ikan segera setelah yang pertama selesai memuat, tetapi jika saya memerlukan baris perintah bash saya masih bisa memulainya dengan
bash
.sumber