อะไรคือความแตกต่างในการทำงานระหว่าง. profile .bash_profile และ. bashrc


คำตอบ:


151

.bash_profileและ.bashrcมีความเฉพาะเจาะจงbashในขณะที่.profileเชลล์จำนวนมากถูกอ่านโดยไม่มีไฟล์กำหนดค่าเชลล์เฉพาะของตนเอง ( .profileถูกใช้โดยเชลล์เป้าหมายเดิม) .bash_profileหรือ.profileอ่านโดยล็อกอินเชลล์พร้อมกับ.bashrc; subshells .bashrcอ่านเท่านั้น (ระหว่างการควบคุมงานและระบบหน้าต่างที่ทันสมัย.bashrcโดยตัวมันเองไม่ค่อยได้ใช้อะไรมากนักถ้าคุณใช้screenหรือtmuxหน้าจอ / windows มักจะใช้ subshells แทนเชลล์ล็อกอิน)

คิดที่อยู่เบื้องหลังนี้คือการที่ติดตั้งครั้งเดียวทำโดย.profile(หรือรุ่นเปลือกเฉพาะดังกล่าว) .bashrcและต่อสิ่งเปลือกโดย ตัวอย่างเช่นโดยทั่วไปคุณต้องการโหลดตัวแปรสภาพแวดล้อมหนึ่งครั้งต่อเซสชันแทนที่จะทำให้พวกเขาถูกโจมตีเมื่อใดก็ตามที่คุณเรียกใช้ subshell ภายในเซสชันในขณะที่คุณต้องการนามแฝงของคุณเสมอ

ไฟล์ config ของเชลล์ที่มีชื่อเสียงอื่น ๆ :

/etc/bash_profile(fallback /etc/profile) ถูกอ่านก่อนผู้ใช้.profileสำหรับการกำหนดค่าทั้งระบบและ/etc/bashrcใน subshells เช่นเดียวกัน(ไม่มีทางเลือกสำหรับอันนี้) ระบบจำนวนมากรวมทั้ง Ubuntu ยังใช้/etc/profile.dไดเรกทอรีที่มี scriptlets เปลือกซึ่งเป็น.( source) -ed จาก/etc/profile; แฟรกเมนต์ที่นี่เป็นแบบต่อเชลล์โดย*.shใช้กับเชลล์ที่เข้ากันได้ของ Bourne / POSIX ทั้งหมดและส่วนขยายอื่น ๆ ที่ใช้กับเชลล์นั้น


58

.ข้อมูลส่วนตัว

.profileสำหรับสิ่งที่ไม่เกี่ยวข้องโดยเฉพาะBashเช่นตัวแปรสภาพแวดล้อมPATHและเพื่อน ๆ และควรมีให้ทุกเวลา

ตัวอย่างเช่น.profileควรโหลดเมื่อเริ่มต้นเซสชันเดสก์ทอปแบบกราฟิก


.bashrc

.bashrcใช้สำหรับกำหนดค่าการใช้งาน Bash เชิงโต้ตอบเช่นBash aliasesตั้งค่ารายการโปรดของคุณeditorตั้งค่าBash promptและอื่น ๆ


.bash_profile

.bash_profile คือเพื่อให้แน่ใจว่าทั้งสองสิ่งที่อยู่ใน.profileและมีการโหลดสำหรับ.bashrclogin shells

ตัวอย่างเช่น.bash_profileอาจเป็นสิ่งที่ง่ายเหมือน

. ~/.profile
. ~/.bashrc

หากคุณกำลังจะละเว้น.bashrcเพียง.profileจะได้รับการโหลด


1
สิ่งนี้ตอบคำถามของฉันสำหรับ Mac OS X
Jake Toronto

38

ตามหน้า man bash .bash_profileจะถูกเรียกใช้งานสำหรับเชลล์การเข้าสู่ระบบในขณะที่.bashrcถูกดำเนินการสำหรับเชลล์ที่ไม่ใช่การล็อกอิน

ดังนั้นอะไรคือล็อกอินหรือเชลล์ที่ไม่ได้ล็อกอิน?

เมื่อคุณเข้าสู่ระบบ (พิมพ์ชื่อผู้ใช้และรหัสผ่าน) ผ่านทางคอนโซลไม่ว่าจะนั่งอยู่ที่เครื่องหรือจากระยะไกลผ่าน ssh: .bash_profileจะถูกดำเนินการเพื่อกำหนดค่าเชลล์ของคุณก่อนที่จะให้พรอมต์คำสั่งเริ่มต้น แต่ถ้าคุณได้ลงชื่อเข้าใช้เครื่องของคุณแล้วและเปิดหน้าต่างเทอร์มินัลใหม่ (xterm) ภายใน Gnome หรือ KDE ระบบ.bashrcจะดำเนินการก่อนที่พรอมต์คำสั่งหน้าต่าง .bashrcจะทำงานเมื่อคุณเริ่มต้นอินสแตนซ์ bash ใหม่โดยการพิมพ์/bin/bashในเทอร์มินัล

ข้อยกเว้นหลักเกณฑ์หน้าต่าง terminal เป็น Mac OS X ของ Terminal.app ซึ่งวิ่งเปลือกเข้าสู่ระบบโดยเริ่มต้นสำหรับหน้าต่าง terminal ใหม่แต่ละเรียกแทน.bash_profile .bashrcตัวเลียนแบบเทอร์มินัล GUI อื่นอาจทำเช่นเดียวกัน แต่ส่วนใหญ่มักจะไม่ทำเช่นนั้น

เพิ่มเติมที่นี่

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