~/.bashrc
และ/etc/bash.bashrc
จะถูกเรียกใช้ทุกครั้งที่bash
เชลล์แบบโต้ตอบเริ่มทำงาน
ในทางตรงกันข้าม~/.profile
และ/etc/profile
จะทำงานทุกครั้งที่มีการเข้าสู่ระบบเชลล์เริ่มต้น ดังนั้นจึงไม่จำเป็นต้องเป็นbash
เชลล์ แต่จำเป็นต้องเป็นเชลล์ล็อกอิน (และbash
อินสแตนซ์เชลล์จำนวนมากไม่ใช่เชลล์ล็อกอิน )
bash
เปลือกเปลือกที่โปรแกรมเปลือกที่ให้มันเป็นbash
มากกว่าโปรแกรมอื่น ๆ dash
บางอย่างเช่น
- เปลือกเข้าสู่ระบบเป็นเปลือกที่เริ่มต้นโดยอัตโนมัติเป็นผลมาจากการเข้าสู่ระบบเพื่อให้ส่วนต่อประสานผู้ใช้ (กราฟิกหรือบรรทัดคำสั่ง) สำหรับการเข้าสู่ระบบ เมื่อออกจากการเข้าสู่ระบบเชลล์การเข้าสู่ระบบจะยุติลง
ดังนั้นการใส่คำชื่นชมที่ต่อท้ายรายการPATH
ในbashrc
ไฟล์จะ:
ไม่ทำอะไรเลยเมื่อเปลือกไม่ได้bash
ซึ่งมักจะเป็นกรณี ตัวอย่างเช่นPATH
จะไม่มีการแก้ไขเมื่อคุณอยู่ในเซสชันการเข้าสู่ระบบแบบกราฟิก โปรดจำไว้PATH
ว่าไม่ได้ถูกใช้โดยโปรแกรมบรรทัดคำสั่งเท่านั้น
ต่อท้ายซ้ำแล้วซ้ำอีกในการปรากฏตัวของbash
เปลือกที่ซ้อนกัน ดังนั้นถ้าคุณเริ่มต้นเปลือกภายในเปลือก - ซึ่งเป็นเรื่องธรรมดามากสำหรับหลากหลายเหตุผล - แล้วคุณจะมีหลายรายการซ้อนกันบนของคุณ~/bin
PATH
สิ่งนี้ทำให้PATH
ตัวแปรสภาพแวดล้อมอ่านยากและบางครั้งก็ลดประสิทธิภาพลง
สิ่งเหล่านี้จะไม่พึงประสงค์ ดังนั้นมันจะผิดที่จะใส่ลงในbashrc
ไฟล์ ~/.profile
จริงๆมันอยู่ใน ~/.profile
เป็นสถานที่ที่เหมาะสมสำหรับ:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
เชลล์ที่ไม่ได้ล็อกอินมีเชลล์ล็อกอิน (หรือบางอย่างที่ทำงานเหมือนเชลล์ล็อกอิน) เป็นพาเรนต์และสืบทอดตัวแปรสภาพแวดล้อมส่วนใหญ่รวมถึงPATH
จากเชลล์ล็อกอินนี้ ดังนั้นการวางคำสั่งการแก้ไขพา ธ~/.profile
ให้คุณออกจากระบบและกลับมาใหม่เพื่อให้มีประสิทธิภาพ แต่จะมีผลต่อสภาพแวดล้อมของเชลล์ที่ไม่ใช่การล็อกอินด้วย (รวมถึงสภาพแวดล้อมของโปรแกรมที่ไม่ใช่เชลล์ด้วยเนื่องจากทุกโปรแกรมได้รับมา ชุดตัวแปรสภาพแวดล้อมของตัวเอง - เรียกว่า "สภาพแวดล้อม" - สืบทอดมาจากกระบวนการแม่)