อะไรคือความแตกต่างระหว่าง ~ / .profile, ~ / .bashrc, ~ / .bash_profile, ~ / .gnomerc, / etc / bash_bashrc, / etc / screenrc …?


68

คำตอบสำหรับคำถามเกี่ยวกับSOและaskubuntuพร้อมกับ poking through (และส่วนหัวอ่านของ) $HOMEและ/etc/ระบุจำนวนไฟล์ที่สามารถใช้เพื่อตั้งค่าตัวแปรสภาพแวดล้อมรวมถึง:

  • ~/.profile
  • ~/.bashrc
  • ~/.bash_profile
  • ~/.gnomerc
  • ~/.Rprofile
  • /etc/bash_bashrc
  • /etc/profile
  • /etc/screenrc

ฉันรวบรวมไฟล์ที่ใช้/etc/งานได้สำหรับผู้ใช้ทุกคนในขณะที่ไฟล์$HOMEนั้นเป็นไฟล์เฉพาะของผู้ใช้ ฉันยังรวบรวมที่.profileโหลดเมื่อเข้าสู่ระบบในขณะที่.bashrcโหลดเมื่อ/bin/bashถูกดำเนินการ ฉันยังเข้าใจว่าโปรแกรมต่าง ๆ มีไฟล์การตั้งค่าที่แตกต่างกัน (เช่น.Rprofileสำหรับ R) แต่ฉันขอขอบคุณการชี้แจงบางอย่าง:

  • มี*rcและ*profileไฟล์ที่แตกต่างกัน?
  • ขอบเขตของไฟล์ดังกล่าวคืออะไร (เช่นไฟล์ใดที่มักใช้กับ Linux)
  • มีลำดับชั้น (เช่น.bashrcเขียนทับชุดตัวแปร.settings)
  • การอ้างอิงที่ดีสำหรับไฟล์ประเภทนี้คืออะไร? สำหรับตัวเลือกในไฟล์เหล่านี้?

คำถามที่เชื่อมโยง


3
ดูในส่วนINVOCATION man bashดูFHSบทความ wiki บนระบบไฟล์ Linux นั่นจะเป็นการเริ่มต้นที่ดีและตอบคำถามเหล่านี้สองสามข้อ ไฟล์ที่มีจุดก่อนหน้านี้ ( .) จะเป็นแบบเจาะจงผู้ใช้โดยทั่วไปจะอยู่ใน$HOMEไดเรกทอรีของผู้ใช้

3
ทั้งหมดนั้น? จริงๆ?
Ignacio Vazquez-Abrams

@ IgnacioVazquez-Abrams ฉันไม่ได้มองหารายละเอียดเพียงแค่คำอธิบายทั่วไปว่าพวกเขาเกี่ยวข้องกันอย่างไรและเมื่อใดควรใช้อีกอัน
Abe

คำตอบ:


48

การจัดระเบียบไฟล์การกำหนดค่านั้นน้อยกว่าคำถามของคุณมาก ไม่มี "คลาส" ไม่มี "ลำดับชั้น" และไม่มี "การกำหนดค่าจักรพรรดิ" ระดับโลกและคณะกรรมการที่กำหนดไวยากรณ์ร่วมกันหรือภาพรวมที่ดีอื่น ๆ เช่นที่คุณกำลังมองหา มีเพียงความหลากหลายของการใช้งานที่แยกต่างหากเช่นเป็นR, bash, screenและ GNOME desktop สิ่งแวดล้อมทุกคนมีวิธีการของตัวเองในการทำสิ่งดังนั้นคุณควรดูที่เอกสารสำหรับแต่ละโปรแกรมของแต่ละบุคคลที่จะตอบใด ๆที่เฉพาะเจาะจงคำถามเกี่ยวกับแฟ้มเฉพาะ หากดูเหมือนว่าเป็นโฆษณานั่นเป็นเพราะซอฟต์แวร์ Unix / Linux ส่วนใหญ่ได้รับการพัฒนาเพื่อจุดประสงค์ที่แตกต่างกันโดยผู้ใช้ที่ต่างกันซึ่งทุกคนมีการกำหนดค่าต่างกันเล็กน้อย

ในการตอบคำถามอื่น ๆ ของคุณตามจุด:

  • *rcและ*profileไม่ได้มีความหมายมากดังนั้นคำถามนี้ไม่สามารถตอบได้จริงๆ "rc" เป็นเพียงตัวย่อที่ใช้กันทั่วไปหรือคำต่อท้ายสำหรับไฟล์การกำหนดค่า นิรุกติศาสตร์มันกลับไปสมัยโบราณ (ในปีคอมพิวเตอร์) และอาจหมายถึงคำสั่งเรียกใช้ (จากruncom ) เพียงเพราะแอปพลิเคชันใช้คำเดียวกันไม่ได้หมายความว่าพวกเขาเห็นด้วยกับอนุสัญญา "โปรไฟล์" เป็นคำต่อท้ายที่พบได้น้อยกว่ามาก

  • กำหนด "ขอบเขต" แอปพลิเคชั่นส่วนใหญ่ไม่แชร์ไฟล์การกำหนดค่ากับแอพพลิเคชั่นที่ไม่เกี่ยวข้องอื่น ๆ ข้อยกเว้นที่เป็นไปได้ข้อหนึ่งคือ/etc/profileและ.profileซึ่งอาจใช้โดยเชลล์ที่แตกต่างกันหลายตัว (รวมถึงอย่างน้อยshและbash) มีสิ่งที่เรียกว่าสภาพแวดล้อมที่เกี่ยวข้องกับทุกกระบวนการทำงานซึ่งสามารถมีตัวแปรที่อาจส่งผลกระทบต่อพฤติกรรมของกระบวนการดังกล่าว โดยทั่วไปแล้วตัวแปรสภาพแวดล้อมจะถูกตั้งค่าโดยไฟล์กำหนดค่าเชลล์ที่เหมาะสมหรืออาจเป็นไฟล์กำหนดค่าของสภาพแวดล้อมแบบกราฟิกเดสก์ท็อปที่คุณใช้งานอยู่ นอกจากนี้ยังมีไฟล์กำหนดค่าสำหรับ "ไลบรารี" เช่น.inputrcสำหรับ readline และ.gtkrc*สำหรับ GTK ซึ่งจะมีผลกับทุกแอปพลิเคชันที่ใช้ไลบรารี

  • ไม่ไม่มีลำดับชั้นส่วนกลางสำหรับไฟล์การกำหนดค่า อีกครั้งโปรดดูเอกสารสำหรับโปรแกรมเฉพาะในคำถามเช่นbashคู่มือbashสำหรับ สนธิสัญญาทั่วไปที่คุณมักจะสามารถพึ่งพาคือว่าการตั้งค่าของผู้ใช้ในการกำหนดค่าการแทนที่ทั้งระบบใน$HOME /etcสิ่งนี้สามารถทำได้โดยการอ่านไฟล์ผู้ใช้หลังจากระบบหนึ่งดังนั้นการตั้งค่าในภายหลังจะเขียนทับไฟล์ก่อนหน้า อย่างไรก็ตามนี่ไม่ใช่การรับประกันและสำหรับคำตอบที่ชัดเจนคุณควรอ่านเอกสารสำหรับโปรแกรมเฉพาะที่คุณใช้งาน

  • ไม่มี "คลาส" อย่างน้อยก็ไม่มีใครทั่วไปพอที่จะรวมไฟล์ทั้งหมดที่คุณระบุไว้ในคำถามของคุณดังนั้นคำถามของการอ้างอิงสำหรับ "คลาส" ดังกล่าวจึงเป็นสิ่งที่สงสัย โปรดดูเอกสารของโปรแกรมเฉพาะที่คุณใช้อีกครั้ง


5

ฉันคิดว่าคำถามนี้กว้างเกินไปในหลาย ๆ ระดับเช่นคุณกำลังถามคำถามเกี่ยวกับโปรแกรมต่าง ๆอย่างน้อยสี่รายการในคำถามเดียว ฉันจะดูที่ความแตกต่างระหว่างการตั้งค่าไฟล์ในและ/etc$HOME

ยูนิกซ์เป็นระบบปฏิบัติการที่ผู้ใช้หลายนี้หมายความว่าบุคคลที่แตกต่างกันสามารถใช้ระบบการอย่างใดอย่างหนึ่งโดยใช้ssh, หรือtelnet Xorgเพื่อให้การกำหนดค่ามาตรฐานสำหรับผู้ใช้ของคุณคุณสามารถให้การกำหนดค่ากว้างในระบบ/etc/นี้มักจะใช้โดยการจัดจำหน่ายของคุณเพื่อให้การกำหนดค่าระดับโลกสำหรับเช่นหรือbashscreen

ในทางกลับกันผู้ใช้บางคนต้องการปรับแต่งการตั้งค่าสำหรับโปรแกรมของตนเองเช่นการโยงคีย์สีหรือรูปลักษณ์ $HOMEนี้จะกระทำผ่านทางไฟล์การกำหนดค่าในของพวกเขา ดังนั้นในระยะสั้น/etc/ให้กำหนดค่าระบบกว้างในขณะที่ไฟล์กำหนดค่าใน $ HOME ช่วยให้ผู้ใช้สามารถเปลี่ยน / แทนที่การตั้งค่าระบบกว้าง


3

ส่วนหนึ่งของคำตอบมาจากโพสต์นี้ :

.bashrc เป็นเชลล์สคริปต์ที่ Bash ทำงานเมื่อใดก็ตามที่เริ่มทำงานแบบโต้ตอบ

ความคมชัด.bash_profileและ.profileสิ่งที่เรียกใช้เมื่อเริ่มต้นของเชลล์ล็อกอินใหม่ (bash -l)

คุณเลือกว่าคำสั่งจะทำงานเป็นแบบ.bashrcVS หรือไม่.bash_profileขึ้นอยู่กับว่าคุณต้องการให้มันรันครั้งเดียวหรือทุกครั้งที่เชลล์แบบโต้ตอบเริ่มทำงาน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.