ทำไมมันถึงมามัน คุณไม่ได้ทำงานจริงbash:
$ echo $SHELL
/bin/sh
ในระบบที่ทันสมัยที่สุดshคือ symlink ไปยังเชลล์พื้นฐาน ใน Debian ของฉันเช่น:
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Aug 1 2012 /bin/sh -> dash
ในกรณีของคุณshเป็นลิงก์ไปยังbashแต่ตามที่อธิบายไว้ในman bash:
หาก bash ถูกเรียกใช้ด้วยชื่อ sh มันจะพยายามเลียนแบบพฤติกรรมการเริ่มต้นของ sh เวอร์ชั่นที่ผ่านมามากที่สุดเท่าที่จะทำได้ในขณะที่สอดคล้องกับมาตรฐาน POSIX เช่นกัน [... ] เมื่อเรียกใช้เป็นเชลล์เชิงโต้ตอบที่มีชื่อ sh, bash จะมองหาตัวแปร ENV, ขยายค่าของมันหากมีการกำหนดไว้และใช้ค่าที่ขยายเป็นชื่อของไฟล์ที่จะอ่านและดำเนินการ เนื่องจากเชลล์เรียกใช้โดย sh ไม่ได้พยายามอ่านและเรียกใช้คำสั่งจากไฟล์เริ่มต้นอื่น ๆอ็อพชัน --rcfile จะไม่มีผลใด ๆ
และ
--norc
อย่าอ่านและดำเนินการไฟล์เริ่มต้นระบบ /etc/bash.bashrc และไฟล์เริ่มต้นส่วนบุคคล ~ / .bashrc หากเชลล์เป็นแบบโต้ตอบ ตัวเลือกนี้เปิดใช้งานตามค่าเริ่มต้นหากเชลล์ถูกเรียกใช้เป็น sh
ดังนั้นตั้งแต่เปลือกเริ่มต้นของคุณsh, .bashrcไม่ได้อ่าน chsh -s /bin/bashเพียงแค่ตั้งค่าเริ่มต้นเปลือกของคุณเพื่อทุบตีใช้
/bin/sh/bin/bashฉันคิดว่าปัญหานี้เกิดจากการไม่ได้กำหนดเชลล์อย่างชัดเจนถึง/bin/bashเมื่อฉันสร้างบัญชีผู้ใช้