ดูที่นี่สำหรับคำอธิบายและวิธีแก้ปัญหาที่ดีเยี่ยมที่โพสต์โดย @ 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? คู่มือระบุว่าหากเชลล์ที่คุณระบุไม่ได้อยู่ในไฟล์นั้นจะไม่ถือว่าเชลล์มาตรฐาน