ดูที่นี่สำหรับคำอธิบายและวิธีแก้ปัญหาที่ดีเยี่ยมที่โพสต์โดย @ mklement0 [เกี่ยวข้องกับbash
ปัญหาการอัพเกรด
ฉันมีปัญหาที่คล้ายกันในการทำตรงข้ามกับระบบของฉัน (OS X 10.10.1): การสร้างbash
เชลล์การเข้าสู่ระบบเริ่มต้นอีกครั้งหลังจากที่ฉันติดตั้งoh-my-zsh
ซึ่งทำให้zsh
ค่าเริ่มต้นแล้วอัพเกรดbash
จาก 3.2.53 เป็น 4.3.30 โดยใช้ Homebrew ( ทำไม Apple จัดส่งโยเซมิตีพร้อมbash
เวอร์ชันเก่า?)
ฉันคิดว่าSHELL
ตัวแปรสภาพแวดล้อมสะท้อนให้เห็นถึง แต่ไม่ได้ควบคุมเปลือกเข้าสู่ระบบเริ่มต้นที่แท้จริงสำหรับผู้ใช้ ตัวอย่างเช่นถ้าbash
เป็นค่าเริ่มต้นของคุณและคุณเปิดbash
หน้าต่างเชลล์ใหม่จากเทอร์มินัล$ export SHELL="/bin/zsh"; echo "$SHELL"
จะแสดง/bin/zsh
แต่จะไม่มีการเปลี่ยนแปลงจริงเกิดขึ้นเพราะถ้าคุณเปิดหน้าต่างเชลล์ใหม่จากเทอร์มินัล$ echo $0
แล้วคุณจะเห็น-bash
( $0
มีชื่อและพา ธ ของคำสั่งที่เริ่มต้นหน้าต่างเชลล์ในกรณีนี้bash
และ-
ถัดจากนั้นระบุว่าเป็นเชลล์ล็อกอิน)
ในฐานะที่เป็น @ mklement0 ชี้ให้เห็นเปลือกเข้าสู่ระบบเริ่มต้นที่เกิดขึ้นจริงสำหรับผู้ใช้ที่ถูกควบคุมโดยUserShell
คุณสมบัติในการบันทึกของผู้ใช้ในฐานข้อมูลภายในของระบบ - dscl
นี้สามารถสอบถามและปรับปรุงการใช้ยูทิลิตีบรรทัดคำสั่ง ข้อมูลนี้จะส่งผ่านไปยังแอปเทอร์มินัลของคุณเมื่อคุณเปิดหน้าต่างเชลล์
สิ่งที่chsh -s /bin/zsh
ไม่สามารถเปลี่ยนนี้UserShell
คุณสมบัติการตั้งค่าให้zsh
- คุณสามารถตรวจสอบเรื่องนี้โดยการทำทันทีหลังจากนั้นและคุณจะเห็นdscl . -read /Users/$USER/ UserShell
UserShell: /bin/zsh
แต่การเปลี่ยนแปลงจะไม่มีผลในหน้าต่างปัจจุบันจนกว่าคุณจะทำสิ่งที่ชอบexec su - $USER
ตามที่แนะนำโดย @ mklement0 หรือจนกว่าคุณจะปิดและเปิดหน้าต่างเชลล์
/etc/shells
? คู่มือระบุว่าหากเชลล์ที่คุณระบุไม่ได้อยู่ในไฟล์นั้นจะไม่ถือว่าเชลล์มาตรฐาน