คำตอบ:
~/.profileตามเนื้อผ้าสถานที่ที่จะกำหนดตัวแปรสภาพแวดล้อมต่อผู้ใช้ในระบบยูนิกซ์เป็น ไฟล์นี้อ่านโดยเชลล์ล็อกอิน (เช่นโปรแกรมที่เริ่มต้นเมื่อคุณเข้าสู่ระบบและคุณสามารถพิมพ์คำสั่งลงไปได้) โดยที่เชลล์ล็อกอินนั้นเป็นเชลล์ที่เข้ากันได้กับบอร์น
Bash เป็นเปลือกที่รองรับบอร์น เมื่อมันถูกเรียกใช้ในฐานะที่เป็นเปลือกเข้าสู่ระบบอ่าน~/.bash_profileว่าไฟล์นี้มีอยู่และ~/.profileถ้า~/.bash_profileไม่มี
ตามกฎทั่วไปหากคุณพิมพ์รหัสผ่านในโหมดข้อความ (เช่นบนคอนโซลข้อความหรือจากระยะไกลด้วย ssh) เชลล์ที่คุณได้รับคือเชลล์ล็อกอิน
อย่างไรก็ตามหากคุณพิมพ์รหัสผ่านของคุณในโปรแกรมกราฟิกและได้รับการเข้าสู่ระบบในสภาพแวดล้อมแบบกราฟิกนี้จะข้ามเปลือกเข้าสู่ระบบปกติ การ.profileอ่านในกรณีนี้ขึ้นอยู่กับการตั้งค่าเซสชันกราฟิกหรือไม่ เช่นมันแตกต่างกันไประหว่างการแจกแจงลินุกซ์, ระหว่างผู้จัดการการแสดงผลและระหว่างสภาพแวดล้อมเดสก์ทอป บางครั้งหนึ่งในโปรแกรมในกลุ่มอย่างชัดเจนจะเรียกเปลือกเข้าสู่ระบบอย่างชัดเจน บางครั้งหนึ่งในโปรแกรมอ่านอย่างชัดเจน~/.profile; และบางครั้งไม่มีสิ่งนี้เกิดขึ้นและ~/.profileไม่ได้รับการอ่าน
เพื่อให้ตัวอย่างของความแปรปรวนเท่าที่ฉันสามารถบอกได้อย่างรวดเร็วจากสคริปต์ที่เกี่ยวข้องใน Ubuntu 10.04: ถ้าคุณเข้าสู่ระบบด้วย kdm หรือ lxdm ~/.bash_profileจะอ่านถ้ามันมีอยู่และ~/.profileอื่น ๆ ; หากคุณเข้าสู่ระบบด้วย gdm ~/.profileอ่านเท่านั้น; หากคุณเข้าสู่ระบบด้วย xdm ~/.profileจะไม่อ่าน
ระบบทั้งหมดที่ฉันรู้จักให้วิธีการตั้งค่าตัวแปรสภาพแวดล้อมแบบผู้ใช้แต่ละคน น่าเสียดายที่ไม่มีคำตอบทั่วไป
โปรดทราบว่าบางครั้งคุณจะเห็นคำแนะนำในการตั้งค่าตัวแปรสภาพแวดล้อม~/.bashrcหรือเริ่มเชลล์การเข้าสู่ระบบในแต่ละเทอร์มินัลในสภาพแวดล้อม GUI ทั้งคู่เป็นความคิดที่ไม่ดี หนึ่งในเหตุผลคือปัญหาที่คุณประสบนั่นคือตัวแปรสภาพแวดล้อมของคุณมีเฉพาะในโปรแกรมที่เริ่มจากเทอร์มินัลและไม่ใช่ในโปรแกรมที่เริ่มต้นโดยตรงด้วยไอคอนหรือเมนูหรือแป้นพิมพ์ลัด
.profileจะอ่านเมื่อคุณเข้าสู่ระบบในการวางตัวแปรสภาพแวดล้อมใน. .bashrcไม่ได้ทำงานและสถานการณ์ของคุณแสดงให้เห็นว่า: การประยุกต์ใช้ (สมมุติ GUI) ที่ทำงานเปลือกนี้ควรจะมีตัวแปรสภาพแวดล้อมของคุณ แต่ถ้าคุณกำหนดไว้ใน.bashrcมัน doesn' เสื้อ
คำตอบที่ชัดเจนคือในส่วนทุบตีหน้าคนบนทุบตีไฟล์เริ่มต้น "เมื่อเชลล์เชิงโต้ตอบที่ไม่ใช่เชลล์ล็อกอินเริ่มต้นแล้ว Bash จะอ่านและดำเนินการคำสั่งจาก ~ / .bashrc หากมีไฟล์นั้นอยู่"
ตอบคำถามอื่น ๆ ของคุณชี้ให้เห็นว่า eshell bashไม่ได้ทำงานจริง Emacs ไม่eshell bashสมมติว่าeshellจะโหลด.bashrcเป็นความผิดพลาดเป็นสมมติzshหรือจะโหลดcsh .bashrcมันเป็นเปลือกที่แตกต่างกัน
ฉันเห็นสองตัวเลือก:
bashและรหัส Elisp eshellสำหรับนอกจากนี้คุณยังอาจจะสนใจในการอภิปรายเกี่ยวกับการเพิ่มไดเรกทอรีไปยังเส้นทางโดยไม่ซ้ำกัน
การตั้งค่า PATH ใน ~ / .profile ของคุณควรจะใช้งานได้ ไฟล์นั้นจะถูกอ่านเมื่อเข้าสู่ระบบโดยเชลล์ที่เข้ากันได้กับ POSIX หรือเชลล์คล้ายบอร์นที่ฉันรู้จักรวมถึงการทุบตี หากคุณทำการเปลี่ยนแปลงไฟล์คุณจะต้องออกจากระบบและลงชื่อเข้าใช้อีกครั้งเพื่อให้การเปลี่ยนแปลงมีผล เนื่องจาก PATH เป็นส่วนหนึ่งของสภาพแวดล้อมของกระบวนการลงชื่อเข้าใช้ของคุณจึงควรส่งออกไปยังทุกเชลล์ที่คุณเริ่มในภายหลัง