คำตอบ:
~/.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 เป็นส่วนหนึ่งของสภาพแวดล้อมของกระบวนการลงชื่อเข้าใช้ของคุณจึงควรส่งออกไปยังทุกเชลล์ที่คุณเริ่มในภายหลัง