หากคุณไม่สามารถทำงานได้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
ไฟล์ ออกจากระบบและเข้าสู่ระบบและทำ!