มันซับซ้อนนะ ก่อนอื่นรายละเอียดขึ้นอยู่กับชนิดของเชลล์ที่คุณใช้ เพื่อขโมยความคิดของตัวเอง :
เมื่อคุณเปิดเทอร์มินัลอีมูเลเตอร์ ( gnome-terminal
ตัวอย่าง) คุณกำลังดำเนินการสิ่งที่เรียกว่าเชลล์แบบโต้ตอบและไม่ใช่การล็อกอิน
เมื่อคุณล็อกอินเข้าสู่เครื่องจากบรรทัดคำสั่งหรือเรียกใช้คำสั่งเช่นsu - username
คุณกำลังเรียกใช้เชลล์ล็อกอินแบบโต้ตอบ
เมื่อคุณเข้าสู่ระบบแบบกราฟิกคุณกำลังเรียกใช้บางสิ่งที่แตกต่างอย่างสิ้นเชิง รายละเอียดจะขึ้นอยู่กับระบบและสภาพแวดล้อมแบบกราฟิกของคุณ แต่โดยทั่วไปจะเป็นเชลล์แบบกราฟิกที่เกี่ยวข้องกับการเข้าสู่ระบบของคุณ ในขณะที่เชลล์กราฟิกจำนวนมาก (รวมถึงค่าเริ่มต้นของ Ubuntu) จะอ่าน/etc/profile
และ~/.profile
ไม่สามารถทำได้ทั้งหมด
ในที่สุดเมื่อคุณเรียกใช้สคริปต์เปลือกก็จะทำงานในไม่โต้ตอบเปลือกที่ไม่ได้เข้าสู่ระบบ
ไฟล์ที่ทุบตีจะอ่านเมื่อเปิดตัวขึ้นอยู่กับประเภทของเปลือกที่กำลังทำงานเป็น ต่อไปนี้เป็นข้อความที่ตัดตอนมาจากส่วน INVOCATION ของman bash
(เหมืองของการเน้น):
เมื่อทุบตีถูกเรียกเป็นเปลือกเข้าสู่ระบบแบบโต้ตอบหรือเป็นเปลือกไม่โต้ตอบกับตัวเลือก --login มันเป็นครั้งแรกอ่านและรันคำสั่งจากแฟ้ม/ etc / profileถ้าไฟล์ที่มีอยู่ หลังจากอ่านไฟล์นั้นจะค้นหา~ / .bash_profile, ~ / .bash_login และ ~ / .profile ตามลำดับและอ่านและเรียกใช้คำสั่งจากไฟล์แรกที่มีอยู่และอ่านได้ ตัวเลือก --noprofile อาจถูกใช้เมื่อเชลล์เริ่มต้นเพื่อยับยั้งพฤติกรรมนี้
เมื่อเชลล์เชิงโต้ตอบที่ไม่ใช่เชลล์ล็อกอิน เริ่มทำงาน bash จะอ่านและดำเนินการคำสั่งจาก/etc/bash.bashrcและ~ / .bashrcหากมีไฟล์เหล่านี้อยู่ สิ่งนี้อาจถูกยับยั้งโดยใช้ตัวเลือก --norc ตัวเลือกไฟล์ --rcfile จะบังคับให้ทุบตีเพื่ออ่านและดำเนินการคำสั่งจากไฟล์แทน /etc/bash.bashrc และ ~ / .bashrc
เหล่านี้เป็นไฟล์เริ่มต้น นอกจากนี้คุณยังมี/etc/environment
ที่ที่คุณสามารถตั้งค่าตัวแปรสภาวะแวดล้อมโกลบอลได้ แต่เป็นการอ่านมากกว่าที่จะให้แหล่งที่มา (คำสั่งภายในนั้นไม่ได้ถูกเรียกใช้ แต่มีการตั้งค่านิยามตัวแปรไว้)
ตอนนี้คำทักทายที่คุณเห็นนั้นเป็นอย่างอื่นอีกครั้ง ที่ตั้งอยู่ในและจะปรากฏผ่าน/etc/motd
pam_motd
ตามที่อธิบายไว้ในman motd
:
เนื้อหาของ / etc / motd ถูกแสดงโดย pam_motd (8) หลังจากการล็อกอินสำเร็จ แต่ก่อนที่มันจะประมวลผลล็อกอินเชลล์
ตัวย่อ "motd" ย่อมาจาก "message of the day" และไฟล์นี้มีการใช้แบบดั้งเดิมตามที่ระบุไว้ (ต้องใช้พื้นที่ดิสก์น้อยกว่าเมล์ถึงผู้ใช้ทั้งหมด)
บน Debian GNU / Linux เนื้อหาของ /run/motd.dynamic ก็จะปรากฏขึ้นเช่นกัน ไฟล์นี้สร้างโดย /etc/init.d/motd ตอนบูท
หากต้องการลบข้อความให้ล้าง/etc/motd
ไฟล์และตรวจสอบให้แน่ใจว่าไม่มีสิ่งใดถูกสร้างขึ้นโดย/etc/init.d/motd
ถ้ามี
อย่างไรก็ตามดูเหมือนssh
ว่าคุณกำลังเข้าสู่ระบบผ่านทางเอาท์พุทที่คุณแสดงซึ่งหมายความว่าคุณกำลังใช้เปลือกเข้าสู่ระบบแบบโต้ตอบดูด้านบนสำหรับสิ่งที่หมายถึง ดังนั้นโดยสรุปสิ่งที่คุณสนใจนั้นมีที่มาเมื่อคุณเข้าสู่ระบบคือ (และตามลำดับนี้):
- ภูต SSH ผ่าน
pam_motd
โมดูลห้องสมุด PAM /etc/motd
ที่แสดงเนื้อหาของ ผ่านpam_env
โมดูลจะกำหนดตัวแปรสภาพแวดล้อมจากและ/etc/environment
~/.pam_environment
- เชลล์ล็อกอินเริ่มทำงานและไฟล์ต่อไปนี้ถูกอ่านตามลำดับ:
/etc/profile
/etc/bash.bashrc
( /etc/profile
แหล่งUbuntu เริ่มต้น/etc/bash.bashrc
)
~/.bash_profile
. ไฟล์อื่น ๆ ที่สามารถอ่านได้ที่นี่ ( ~/.profile
และ~/.bash_login
) จะถูกละเว้นเพราะ~/.bash_profile
มีอยู่
export SET_IN_ETC_PROFILE=yes
ใน/etc/profile
,export SET_IN_HOME_ZSHRC=yes
ใน~/.zhshrc
(I am ผู้ใช้ zsh ก) ฯลฯ ... แล้วรีบูตและมีความสุขenv|grep SET_IN
ที่จะบอกคุณทุกเรื่อง หากต้องการดูว่าแอปพลิเคชันเดสก์ท็อปใดบ้างที่เห็นตัวแปร (ตัวที่คุณเรียกใช้จากเส้นประหรือ WM โดยไม่ต้องใช้เทอร์มินัล) ให้ดูaskubuntu.com/a/356973/16395