ใช่นั่นเป็นพฤติกรรมที่คาดหวัง
พฤติกรรมในระยะสั้นมีดังนี้:
- bash เริ่มต้นเป็นเชลล์ล็อกอินแบบโต้ตอบ: อ่าน
~/.profile
- bash เริ่มต้นเป็นเชลล์แบบไม่ล็อกอิน: อ่าน
~/.bashrc
อ่านคู่มือทุบตีเกี่ยวกับไฟล์เริ่มต้นสำหรับรายละเอียดเพิ่มเติม
โดยส่วนตัวฉันคิดว่าพฤติกรรมนี้แปลกและฉันยังไม่ได้หาเหตุผลเข้าข้างตนเองสำหรับการตัดสินใจออกแบบนี้
คำอธิบายบางคำศัพท์:
- เปลือกโต้ตอบเป็นเปลือกที่คุณสามารถพูดคุยโต้ตอบนั่นหมายความว่าคุณสามารถพิมพ์คำสั่งในนั้น เชลล์ส่วนใหญ่ที่คุณจะใช้เป็นเชลล์แบบโต้ตอบ
- เปลือกไม่โต้ตอบเป็นเปลือกที่คุณไม่สามารถโต้ตอบ เชลล์สคริปต์ทำงานภายในเชลล์ที่ไม่มีการโต้ตอบ
- เปลือกเข้าสู่ระบบเป็นเปลือกซึ่งจะเริ่มต้นเมื่อคุณเข้าสู่ระบบของคุณ
- ไม่ใช่การเข้าสู่ระบบเปลือกเปลือกซึ่งจะเริ่มต้นหลังจากที่กระบวนการเข้าสู่ระบบได้
เปลือกหอยที่สุดที่คุณเห็นเป็นเปลือกหอยที่ไม่ได้เข้าสู่ระบบแบบโต้ตอบ นี่เป็นเรื่องจริงโดยเฉพาะอย่างยิ่งถ้าคุณใช้สภาพแวดล้อมแบบกราฟิกเช่น gnome เพราะ gnome นั้นคือ "login shell" เซสชั่นทุบตีใด ๆ ที่เริ่มต้นภายใน gnome เป็นเปลือกที่ไม่ได้ลงชื่อเข้าใช้ หากคุณต้องการเห็นเชลล์ล็อกอินแบบโต้ตอบจริงให้ไปที่คอนโซลเสมือน (ใช้Ctrl+Alt+F1
) จากนั้นล็อกอินโดยใช้ชื่อผู้ใช้และรหัสผ่านของคุณ นั่นคือเชลล์ bash ล็อกอินแบบโต้ตอบจริง Ctrl+Alt+F7
คุณสามารถกลับไปที่เปลือกกราฟิกโดยใช้
มีตัวเลือก--login
ที่จะทำให้ทุบตีพฤติกรรมราวกับว่ามันเป็นเปลือกเข้าสู่ระบบแม้ว่าจะเริ่มต้นหลังจากที่คุณเข้าสู่ระบบการกำหนดค่า gnome-terminal เพื่อเริ่มต้นทุบตีเป็นเปลือกเข้าสู่ระบบหมายความว่ามันจะเริ่มทุบตีโดยใช้--login
ตัวเลือก
โดยปกติแล้วคุณต้องการให้ bash อ่าน~/.bashrc
ในเชลล์เชิงโต้ตอบ นี่คือวิธีที่ฉันแนะนำให้ทำ:
สร้าง~/.bash_profile
ไฟล์ หากทุบตีจะเริ่มต้นเป็นเปลือกเข้าสู่ระบบก่อนจะมองหาก่อนที่จะมองหา~/.bash_profile
~/.profile
หากพบว่าทุบตีแล้วมันจะไม่ได้อ่าน~/.bash_profile
~/.profile
ใส่บรรทัดต่อไปนี้ใน~/.bash_profile
:
[ -f "$HOME/.profile" ] && source "$HOME/.profile"
[ -f "$HOME/.bashrc" ] && source "$HOME/.bashrc"
ตอนนี้ถ้า bash เริ่มต้นเป็นเชลล์ล็อกอินแบบโต้ตอบมันจะอ่านไฟล์ต่อไปนี้:
~/.bash_profile
~/.profile
~/.bashrc
และถ้า bash เริ่มต้นเป็นเชลล์แบบไม่ล็อกอิน:
~/.bashrc
คุณควรใส่สิ่งที่เฉพาะเจาะจงลงไป~/.bashrc
และสิ่งที่ไม่เฉพาะเจาะจงลง~/.profile
ไป ยกตัวอย่างเช่นPATH
ไปใน~/.profile
และไปในการHISTCONTROL
~/.bashrc
โปรดทราบว่า~/.profile
ไม่เฉพาะทุบตี เชลล์ที่อ้างอิงข้อความอื่น ๆ (เช่น sh หรือ ksh) และเชลล์กราฟิก (gnome) ก็อ่าน~/.profile
เช่นกัน ~/.profile
นั่นคือเหตุผลที่คุณไม่ควรใส่ทุบตีสิ่งที่ระบุใน