ทำไมมันถึงมามัน คุณไม่ได้ทำงานจริง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
เมื่อฉันสร้างบัญชีผู้ใช้