หากคุณไม่สามารถทำงานได้chshเพราะคุณไม่ได้มีสิทธิ์ผู้ดูแลระบบ, พูดคุยกับคนที่ไม่
เป็นไปได้ว่าคุณไม่สามารถใช้chshเป็น non-root ได้เนื่องจากมีการกำหนดค่าระบบที่คุณใช้เพื่อให้ใช้chshงานไม่ได้ตัวอย่างเช่นเนื่องจากระบบใช้ NIS หรือ LDAP แทนที่จะเป็น/etc/passwdไฟล์ หรือบางทีผู้ดูแลระบบของคุณแค่ต้องการควบคุมบางอย่าง
ขั้นตอนการเปลี่ยนเปลือกของคุณขึ้นอยู่กับนโยบายขององค์กรของคุณ อาจมีคำสั่งเฉพาะที่ทำchshตามปกติ หรือคุณอาจจำเป็นต้องส่งตั๋วการสนับสนุนเพื่อขอเปลี่ยนแปลงเชลล์
คำตอบอื่น ๆ ส่วนใหญ่ดี แต่ถ้าผู้ดูแลระบบของคุณตอบสนองอย่างสมเหตุสมผลคุณอาจไม่ต้องการแฮ็คสคริปต์เริ่มต้นของคุณ ฉันอาจจะเรียกใช้zsh -lด้วยตนเองหลังจากลงชื่อเข้าใช้จนกว่าผู้ดูแลระบบจะได้รับการอัปเดตบัญชีของฉัน
สิ่งที่ควรทราบ: บางครั้งเชลล์ที่แตกต่างกันสามารถใช้ไฟล์เริ่มต้นเดียวกันได้ ยกตัวอย่างเช่นshและbashทั้งสองสามารถดำเนินการ$HOME/.profileและcshและtcshทั้งสามารถดำเนินการ$HOME/.loginและ$HOME/.cshrc(แม้ว่าเปลือกเฉพาะแฟ้มเริ่มต้นเหมือน.bashrc, .bash_profileและ.tcshrcสามารถแทนที่เหล่านั้น) หากเชลล์เริ่มต้นของคุณคือ/bin/cshและคุณต้องการใช้การ/bin/tcshอัปเดต.loginเพื่อเรียกใช้ของคุณ/bin/tcsh -lสามารถสร้างวงวนไม่สิ้นสุด zshไม่ได้เกิดขึ้นกับการเรียกใช้bashงาน - ไฟล์เริ่มต้นเฉพาะดังนั้นจึงไม่ใช่ปัญหาสำหรับคุณ
เปลือกหอยส่วนใหญ่ตั้งค่าตัวแปรที่ระบุว่าเปลือกคุณกำลังใช้งาน ( $BASH_VERSION, $tcsh, $ZSH_VERSION) หากคุณกำลังจะเขียนรหัสเริ่มต้นเพื่อเรียกใช้เชลล์ที่คุณต้องการคุณไม่ควรใส่มันในกรณีที่ifมันไม่ได้ทำงานอยู่ในกรณีที่คุณไม่ได้ใช้เชลล์นั้น ใช้รหัสจากคำตอบของ konsolebox :
if [ "${ZSH_VERSION:-unset}" = "unset" ] ; then
export SHELL=/bin/zsh
exec /bin/zsh -l
fi
(ความซับซ้อนที่เพิ่มขึ้นของการตรวจสอบ"${ZSH_VERSION:-unset}"แทนที่จะ"$ZSH_VERSION"อนุญาตให้มีความเป็นไปได้ที่คุณได้ทำไปset -o unsetแล้วตัวเลือกที่ทำให้การอ้างอิงถึงตัวแปรที่ไม่ได้กำหนดเป็นข้อผิดพลาด)
zshใน.bashrcไฟล์ ออกจากระบบและเข้าสู่ระบบและทำ!