เปลี่ยนจาก zsh เป็น bash บน OSX และกลับมาอีกครั้งหรือไม่


194

ดังนั้นฉันจึงเรียนรู้ที่จะพัฒนาใน Rails และได้ค้นพบพลังของ zsh อย่างไรก็ตามสำหรับงานอื่นของฉันฉันต้องการใช้ Bash ปกติ แม้ว่าพวกเขาจะเหมือนกัน แต่ฉันก็รู้สึกสบายใจกับการถูกไล่ออกจากงานในบางสถานการณ์ ฉันจะสลับไปมาหรือเปิดและปิด zsh ได้อย่างไร ขอบคุณ!

คำตอบ:


382

คุณสามารถใช้execเพื่อแทนที่เชลล์ปัจจุบันด้วยเชลล์ใหม่:

เปลี่ยนเป็นbash:

exec bash

เปลี่ยนเป็นzsh:

exec zsh

สิ่งนี้จะไม่ส่งผลกระทบต่อหน้าต่างเทอร์มินัลใหม่หรือสิ่งใด ๆ แต่ก็สะดวก


1
ยินดีต้อนรับคุณ! หากคุณพอใจกับคำตอบนี้โปรดสละเวลาสักครู่เพื่อทำเครื่องหมายว่ายอมรับแล้วโดยทำเครื่องหมายถูกที่ด้านซ้ายของคำตอบ ขอบคุณ!
larsks

1
หรือเพียงแค่เรียก zsh และเมื่อคุณทำเสร็จแล้วexitเพื่อกลับไปทุบตี ดูเหมือนว่าไม่จำเป็นและไม่พึงประสงค์
Chris หน้า

ทั้งหมดขึ้นอยู่กับสิ่งที่คุณคาดหวังว่าหน้าต่างเทอร์มินัลของคุณจะทำเมื่อคุณออกจาก ฉันพบว่าการเริ่มต้น subshell นั้นไม่จำเป็นและไม่เป็นที่ต้องการ
larsks

2
คุณจะเปลี่ยนค่าเริ่มต้นได้อย่างไร นอกจากนี้เมื่อฉัน "exec bash" ใน zsh มันไม่ได้มา bash_profile ของฉัน
kalehv

1
มีบางครั้งที่ฉันต้องการใช้ zsh และเวลาอื่นเมื่อมันรบกวนสิ่งที่ฉันต้องการจะทำ การตั้งค่าเริ่มต้นไปมาเป็นความคิดที่ไม่ดีดังนั้นนี่จึงเป็นทางออกที่สมบูรณ์แบบ !!! รุ่งโรจน์ !!
Bob Roberts

126

คุณสามารถลองchsh -s /bin/bashตั้งค่า bash เป็นค่าเริ่มต้นหรือchsh -s /bin/zshตั้งค่า zsh เป็นค่าเริ่มต้น


54

ฉันสลับระหว่าง zsh และ bash ค่อนข้างบ่อย ในขณะที่ฉันเคยต้อง bash_profile ทุกสวิตช์ของฉัน จากนั้นฉันก็พบว่าคุณสามารถทำได้

exec bash --login

หรือเพียงแค่

exec bash -l

1
ขอบคุณ phill ฉันติดตั้ง thinkbot / laptop และปรับแต่ง config ทั้งหมดของฉัน เคล็ดลับของคุณช่วยให้สภาพแวดล้อมการทุบตีของฉันกลับมา
Seralto

1
จะเป็นหมวกที่มีประโยชน์ที่คุณเขียนว่า "--login" เพื่ออะไร
Ewoks

Make bash act as if it had been invoked as a login shell (see INVOCATION below). ที่มา
lony

16

หากเป็นเพียงสวิตช์ชั่วคราว

คุณสามารถใช้ exec ดังกล่าวข้างต้น แต่สำหรับวิธีการแก้ปัญหาถาวร

คุณสามารถใช้chsh -s / bin / bash (เพื่อเปลี่ยนเป็น bash) และchsh -s / bin / zsh (เพื่อเปลี่ยนเป็น zsh)



6

zsh มีคำสั่ง builtin emulateซึ่งสามารถเลียนแบบเชลล์ที่แตกต่างกันโดยการตั้งค่าตัวเลือกที่เหมาะสมแม้ว่า csh จะไม่ถูกจำลองทั้งหมด

emulate bash
perform commands
emulate -R zsh

แฟล็ก -R จะเรียกคืนตัวเลือกทั้งหมดเป็นค่าเริ่มต้นสำหรับเชลล์นั้น

ดู: คู่มือ zsh


1
ไม่ชัดเจนว่าเวอร์ชั่นของ bash นั้นจะเลียนแบบอะไร, มันจะเลียนแบบ bash 4.x หรือไม่? หรือ 5.x
Edgar Aroutiounian

2

คุณควรจะสามารถพิมพ์bashลงในเทอร์มินัลเพื่อเปลี่ยนเป็นทุบตีแล้วพิมพ์zshเพื่อสลับไปที่ zsh ทำงานได้ดีสำหรับฉันอย่างน้อย


มันง่ายกว่านี้อีก
andromeda

2
สิ่งนี้ใช้งานได้ แต่ทุกครั้งที่คุณพิมพ์zshหรือbashคุณกำลังเข้าสู่ sub-shell (subprocess ภายใต้ shell ปัจจุบัน) คุณจะต้องพิมพ์ exit หลาย ๆ ครั้งเพื่อกลับไปที่เชลล์อันดับสูงสุด
RichVel

1

ในเชลล์แบบโต้ตอบดีฟอลต์ของ Mac OS Catalina คือ zsh ในการเปลี่ยนเชลล์เป็น zsh จาก bash:

chsh -s /bin/zsh

จากนั้นคุณต้องป้อนรหัสผ่าน Mac ของคุณ ออกจากเทอร์มินัลแล้วเปิดใหม่ ในการตรวจสอบว่ามันเปลี่ยนเป็น ssh สำเร็จแล้วให้ออกคำสั่งต่อไปนี้

echo $SHELL

หากผลลัพธ์คือ / bin / zsh งานของคุณจะเสร็จสมบูรณ์

หากต้องการเปลี่ยนกลับเป็น bash ให้ใช้คำสั่งต่อไปนี้บนเทอร์มินัล

chsh -s /bin/bash

echo $SHELLตรวจสอบอีกครั้งโดยใช้ ผลลัพธ์ควรเป็น / bin / bash


0

คุณสามารถพิมพ์bashหรือถ้าคุณต้องการใช้ bash:

ใน "iTerm2"

  • ไปที่การตั้งค่า> โปรไฟล์> คำสั่ง
  • เลือก "Command" จากดรอปดาวน์
  • ชนิด bash

ทดสอบโดยปิด iTerm แล้วเปิดใหม่อีกครั้ง


-5

คุณสามารถเปลี่ยนกลับเป็น bash ได้อย่างง่ายดายโดยใช้คำสั่ง "bye"


ลาก่อนจะออกจาก zsh แต่ไม่กลับไปทุบตี
Cece Dong - MSFT
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.