อะไรคือความแตกต่างระหว่างการ.profile
ทำงาน.bash_profile
และ.bashrc
ไฟล์?
อะไรคือความแตกต่างระหว่างการ.profile
ทำงาน.bash_profile
และ.bashrc
ไฟล์?
คำตอบ:
.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 ทั้งหมดและส่วนขยายอื่น ๆ ที่ใช้กับเชลล์นั้น
.ข้อมูลส่วนตัว
.profile
สำหรับสิ่งที่ไม่เกี่ยวข้องโดยเฉพาะBash
เช่นตัวแปรสภาพแวดล้อมPATH
และเพื่อน ๆ และควรมีให้ทุกเวลา
ตัวอย่างเช่น.profile
ควรโหลดเมื่อเริ่มต้นเซสชันเดสก์ทอปแบบกราฟิก
.bashrc
.bashrc
ใช้สำหรับกำหนดค่าการใช้งาน Bash เชิงโต้ตอบเช่นBash aliases
ตั้งค่ารายการโปรดของคุณeditor
ตั้งค่าBash prompt
และอื่น ๆ
.bash_profile
.bash_profile คือเพื่อให้แน่ใจว่าทั้งสองสิ่งที่อยู่ใน.profile
และมีการโหลดสำหรับ.bashrc
login shells
ตัวอย่างเช่น.bash_profile
อาจเป็นสิ่งที่ง่ายเหมือน
. ~/.profile
. ~/.bashrc
หากคุณกำลังจะละเว้น.bashrc
เพียง.profile
จะได้รับการโหลด
ตามหน้า 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 อื่นอาจทำเช่นเดียวกัน แต่ส่วนใหญ่มักจะไม่ทำเช่นนั้น