ใช้ zsh เป็นเชลล์ค่าเริ่มต้นบน Mac

เริ่มจาก macOS Catalina เป็นต้นไป Mac ของคุณจะใช้ zsh เป็นเชลล์เข้าสู่ระบบเริ่มต้นและเชลล์แบบโต้ตอบ คุณสามารถทำ zsh ให้เป็นค่าเริ่มต้นในเวอร์ชั่นก่อนหน้าของ macOS ได้เช่นกัน

ตามค่าเริ่มต้น Mac ของคุณใช้ zsh หรือ Bash เป็นตัวตีความบรรทัดคำสั่งสำหรับเชลล์เข้าสู่ระบบและเชลล์แบบโต้ตอบดังต่อไปนี้

  • zsh (Z shell) เป็นเชลล์เริ่มต้นสำหรับบัญชีผู้ใช้ที่สร้างขึ้นใหม่ทั้งหมด โดยเริ่มจาก macOS Catalina

  • bash เป็นเชลล์ค่าเริ่มต้นใน macOS Mojave และรุ่นก่อนหน้า

zsh เข้ากันได้อย่างมากกับเชลล์ Bourne (sh) และส่วนใหญ่เข้ากันได้กับ Bash โดยมีความแตกต่างบางอย่างอยู่ หากต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับ zsh และระบบเสร็จสิ้นบรรทัดคำสั่งที่ครอบคลุม ให้ป้อน man zsh ในเทอร์มินัล

วิธีเปลี่ยนเชลล์ค่าเริ่มต้น

ไม่ว่าบัญชีผู้ใช้ของคุณจะถูกกำหนดค่าให้ใช้ zsh (แนะนำ), bash หรือเชลล์อื่น คุณสามารถเปลี่ยนเชลล์เริ่มต้นได้จากบรรทัดคำสั่งหรือการตั้งค่าผู้ใช้และกลุ่ม

จากบรรทัดคำสั่ง

ในเทอร์มินัล ให้ป้อน $ chsh -s pathโดยที่ path คือหนึ่งในเส้นทางของเชลล์ตามที่ระบุไว้ใน /etc/shells เช่น /bin/zsh, /bin/bash, /bin/csh, /bin/dash, /bin/ksh, /bin/sh, or /bin/tcsh

จากการตั้งค่าผู้ใช้และกลุ่ม

ใน macOS Ventura หรือใหม่กว่า:

  1. เลือกเมนู Apple  > การตั้งค่าระบบ จากนั้นคลิกผู้ใช้และกลุ่มในแถบด้านข้าง

  2. กดปุ่ม Control ค้างไว้ แล้วคลิกชื่อผู้ใช้หรือรูปภาพผู้ใช้ของคุณในรายการผู้ใช้ทางด้านขวา จากนั้นเลือกตัวเลือกขั้นสูง

  3. ป้อนชื่อผู้ใช้และรหัสผ่านของคุณเมื่อได้รับแจ้ง

  4. เลือกเชลล์จากเมนู "เชลล์เข้าสู่ระบบ" แล้วคลิกตกลงเพื่อบันทึกการเปลี่ยนแปลง

ใน macOS เวอร์ชั่นก่อนหน้า:

  1. เลือกเมนู Apple  > การตั้งค่าระบบ แล้วคลิกผู้ใช้และกลุ่ม

  2. คลิกล็อคไม่มีข้อความอธิบายสำหรับรูปภาพ แล้วป้อนชื่อผู้ใช้และรหัสผ่านของคุณ

  3. กด Control ค้างไว้ แล้วคลิกชื่อผู้ใช้ของคุณในรายการชื่อผู้ใช้ทางด้านซ้าย จากนั้นเลือกตัวเลือกขั้นสูง

  4. เลือกเชลล์จากเมนู "เชลล์เข้าสู่ระบบ" แล้วคลิกตกลงเพื่อบันทึกการเปลี่ยนแปลง

วิธีการใช้เชลล์ที่ต่างกันโดยไม่เปลี่ยนค่าเริ่มต้น

หากคุณไม่ต้องการให้เทอร์มินัลใช้เชลล์เข้าสู่ระบบค่าเริ่มต้นในหน้าต่างและแท็บเทอร์มินัล ให้ทำดังต่อไปนี้

  1. เปิดเทอร์มินัล แล้วเลือกเทอร์มินัล > การตั้งค่า (หรือค่ากำหนด)

  2. จากบานหน้าต่างทั่วไป ให้เลือก "คำสั่ง (เส้นทางสมบูรณ์)"

  3. ในช่องที่อยู่ติดกัน ให้ป้อนเส้นทางใดเส้นทางหนึ่งของเชลล์ที่แสดงไว้ใน /etc/shells เช่น /bin/zsh, /bin/bash, /bin/csh, /bin/dash, /bin/ksh, /bin/sh หรือ /bin/tcsh

หากคุณเรียกใช้เชลล์ Bash ในขณะที่ macOS ได้รับการกำหนดค่าให้ใช้เชลล์อื่น คุณจะเห็นข้อความว่าเชลล์แบบโต้ตอบเริ่มต้นคือ zsh ในการปิดคำเตือนนี้ คุณสามารถเพิ่มคำสั่งนี้ใน ~/.bash_profile หรือ ~/.profile ได้ดังต่อไปนี้

export BASH_SILENCE_DEPRECATION_WARNING=1

วิธีการสลับเป็นโปรไฟล์และพร้อมท์ zsh

หากคุณต้องการใช้โปรไฟล์ Bash เช่น ตัวแปรสภาพแวดล้อม นามแฝง หรือตัวแปรเส้นทาง คุณควรสลับไปใช้โปรไฟล์ที่เทียบเท่า zsh ตัวอย่างเช่น

  • .zprofile เทียบเท่ากับ .bash_profile

  • .zshrc เทียบเท่ากับ .bashrc

หากคุณกำลังใช้ .profile (โปรไฟล์ที่สอดคล้องกับ POSIX) คุณสามารถทำให้ zsh อ่านการตั้งค่าโดยอัตโนมัติโดยเพิ่มคำสั่งนี้ไปที่ .zprofile

[[ -e ~/.profile ]] && emulate sh -c 'source ~/.profile'

คุณสามารถย้ายการตั้งค่าจากโปรไฟล์ Bash ไปยังโปรไฟล์ zsh โดยไม่ผ่านการดัดแปลงได้ ตัวอย่างเช่น หากต้องการตั้งค่าตัวแปรสภาพแวดล้อม ให้ใช้คำสั่งต่อไปนี้: export MY_SETTING=1

zsh จะจดจำชุดตัวระบุพร้อมท์ที่แตกต่างจาก Bash และมีไวยากรณ์ที่สะอาดขึ้นสำหรับการระบุเอาต์พุตที่มีสี ทำให้ไม่จำเป็นต้องใช้ลำดับ ANSI escape ที่ซับซ้อนได้ ตัวอย่างเช่น นี่คือไวยากรณ์สำหรับพร้อมท์ Bash ค่าเริ่มต้นจาก .bash_profile:

export PS1="\[\e[92;40m\]\h\[\e[m\]:\[\e[93m\]\W\[\e[m\] \\$ "

หากต้องการแปลงพร้อมท์ Bash นั้นเป็นพร้อมท์ zsh เมื่อใช้ .zprofile หรือ .zshrc

export PS1="%10F%m%f:%11F%1~%f \$ "

โปรดดูหน้า zsh man เพื่อดูข้อมูลเพิ่มเติม

วิธีการทดสอบสคริปต์เชลล์ของคุณ

ในการทดสอบความเข้ากันได้ของสคริปต์กับเชลล์ที่เข้ากันได้กับ Bourne ใน macOS Catalina หรือใหม่กว่า คุณสามารถเปลี่ยน /var/select/sh เป็น /bin/bash, /bin/dash หรือ /bin/zsh หากคุณเปลี่ยน /var/select/sh เป็นเชลล์อื่นที่ไม่ใช่ Bash โปรดทราบว่าสคริปต์ที่ใช้ประโยชน์จาก Bashisms อาจทำงานไม่ถูกต้อง

zsh สามารถทำเพื่อเลียนแบบ sh โดยเรียกใช้คำสั่ง zsh--emulate sh

การให้ข้อมูลเกี่ยวกับผลิตภัณฑ์ที่ไม่ได้ผลิตโดย Apple หรือเว็บไซต์อิสระที่ Apple ไม่ได้ควบคุมหรือทดสอบไม่ถือเป็นการแนะนำหรือการรับรองใดๆ Apple จะไม่รับผิดชอบในส่วนที่เกี่ยวข้องกับการเลือก ประสิทธิภาพการทำงาน หรือการใช้งานเว็บไซต์หรือผลิตภัณฑ์ของบริษัทอื่น Apple ไม่รับรองความถูกต้องหรือความน่าเชื่อถือของเว็บไซต์ของบริษัทอื่น โปรดติดต่อผู้จำหน่ายหากต้องการข้อมูลเพิ่มเติม

วันที่เผยแพร่: