แก้ไข: ด้านล่างนี้ใช้กับ MSYS2 รุ่นก่อนหน้า ตั้งแต่ 2020-01-21 มันไม่จำเป็นอีกต่อไป คำตอบของ FeRD ดูเหมือนจะทำงานได้ดีที่สุด
ฉันต้องการใช้ปลาแทนทุบตี น่าเสียดายที่วิธีการส่วนใหญ่ที่นี่ไม่ได้ผลอาจเป็นเพราะไวยากรณ์ของปลานั้นแตกต่างกันมาก
สิ่งที่ใช้ได้ผลดีที่สุดคือแนวคิดของ wzhd เกี่ยวกับการวิ่งexec fish
เป็นสิ่งแรกเมื่อเริ่มทุบตี ยังคงมีปัญหาอยู่: ถ้าฉันต้องการใช้ทุบตีฉันต้องแก้ไข.bashrc
เพื่อลบบรรทัดนั้นเพราะแม้ว่าฉันจะเรียกใช้จากปลามันก็จะเริ่มต้นอีกตัวอย่างปลา
สิ่งที่ดีที่สุดที่ต้องทำคือการทำให้แน่ใจว่าexec fish
จะเริ่มต้นเมื่อ msys2 เริ่มต้น แต่ไม่ใช่ทุกครั้งที่เริ่มการทุบตี
วิธีที่ฉันพบคือผ่านไฟล์msys2_shell.cmd
ในโฟลเดอร์การติดตั้งของ msys2 ฉันพบบรรทัดเหล่านี้:
set SHELL_ARGS=
:collectparams
if not "x%~1" == "x" set SHELL_ARGS=%SHELL_ARGS% %1& shift& goto :collectparams
ดูเหมือนว่าพวกเขากำลังกำหนดพารามิเตอร์เพื่อส่งผ่านไปยัง bash ทันทีที่เริ่มต้น แต่เมื่อสคริปต์นี้ทำงาน (ไม่เหมือนกัน.bashrc
) ดังนั้นฉันจึงเพิ่มบรรทัดนี้หลังจาก:
set SHELL_ARGS=%SHELL_ARGS% -c "exec fish"
ดูเหมือนว่าทุกอย่างจะเรียบร้อยดี การเริ่มต้น msys2 จะแทนที่ bash ด้วย fish ทันทีที่การโหลดเสร็จสิ้นก่อนหน้า แต่ถ้าฉันต้องการ bash command line ฉันก็ยังคงสามารถเริ่มต้นbash
ใหม่ได้