.bashrcเป็นไฟล์กำหนดค่าของ bash เฉพาะเมื่อดำเนินการแบบโต้ตอบ มันจะโหลดเมื่อคุณเริ่มทุบตีเท่านั้นไม่ใช่เมื่อคุณเรียกใช้โปรแกรมอื่นเช่นsh(แม้ว่าจะมีการเรียกใช้การทุบตีผ่านชื่อsh) -cและมันก็โหลดเฉพาะเมื่อมีการโต้ตอบทุบตีไม่เมื่อมันรันสคริปต์หรือคำสั่งด้วย
sudo sh -c 'echo $PATH'หรือsudo bash -c 'echo $PATH'ไม่เรียกใช้เชลล์แบบโต้ตอบดังนั้นจึง.bashrcไม่เกี่ยวข้อง
sudo su; echo $PATHรันอินสแตนซ์แบบโต้ตอบของเชลล์รูท ถ้าทุบตีแล้ว~root/.bashrcโหลด ตัวอย่างนี้เรียกใช้งานecho $PATHเมื่อเชลล์แบบโต้ตอบนี้สิ้นสุดลงดังนั้นสิ่งที่เกิดขึ้นในเชลล์แบบโต้ตอบจะไม่มีผลกับสิ่งที่ตัวอย่างข้อมูลพิมพ์ในตอนท้าย แต่ถ้าคุณพิมพ์echo $PATHพรอมต์ของเปลือกโต้ตอบที่ตั้งขึ้นโดยคุณจะเห็นชุดค่าโดยsudo su~root/.bashrc
เนื่องจาก.bashrcถูกเรียกใช้ในแต่ละเชลล์แบบโต้ตอบไม่ใช่โดยเชลล์ล็อกอิน (ไม่ใช่แม้แต่เชลล์ล็อกอินแบบโต้ตอบซึ่งเป็นข้อบกพร่องการออกแบบในการทุบตี) มันเป็นสถานที่ที่ผิดที่จะกำหนดตัวแปรสภาพแวดล้อม ใช้.bashrcสำหรับการตั้งค่า bash แบบโต้ตอบเช่นการเชื่อมโยงคีย์นามแฝงและการตั้งค่าความสมบูรณ์ ตั้งค่าตัวแปรสภาพแวดล้อมในแฟ้มที่จะโหลดเมื่อคุณเข้าสู่ระบบ: หรือ~/.pam_environment~/.profile
ดังนั้นการตั้งค่าPATHใน.profileแทน.bashrcและทั้งเรียกใช้เปลือกเข้าสู่ระบบด้วยsudo -i 'echo $PATH'หรืออย่างชัดเจนแหล่งที่มาด้วย.profilesudo sh -c '. ~/.profile; echo $PATH'