เป็นหลักไม่ว่าเชลล์จะเข้าสู่ระบบหรือไม่โต้ตอบหรือไม่สำคัญด้วยเหตุผลหนึ่งประการ:
ไฟล์การเริ่มต้นและการตั้งค่าตัวเลือกเริ่มต้นขึ้นอยู่กับว่าเชลล์เป็นล็อกอินหรือไม่และโต้ตอบหรือไม่
ตามลําดับไม่ว่าเชลล์จะเข้าสู่ระบบหรือไม่หรือแบบโต้ตอบหรือไม่ขึ้นอยู่กับการภาวนาที่ใช้ - ชื่อคำสั่งและตัวเลือก
คุณสมบัติสองอย่างเป็นอย่างอื่นมุมฉาก - ไม่ว่าเชลล์จะเข้าสู่ระบบหรือไม่มีผลต่อการพิจารณาว่ามันเป็นแบบโต้ตอบหรือไม่
Bash เริ่มต้นเปลือกเข้าสู่ระบบหากสิ่งเหล่านี้เป็นจริง:
argv[0]
ชื่อของคำสั่งที่ถูกเรียกใช้เป็นเริ่มต้นด้วย -
- ระบุ
-l
ตัวเลือก
คล้ายกันทุบตีเริ่มเปลือกโต้ตอบถ้าสิ่งเหล่านี้เป็นจริง:
- มันไม่ได้ระบุไฟล์ที่จะดำเนินการ (เช่นคำสั่งไม่ได้
bash some/file
) หรือสตริงคำสั่งที่จะเรียกใช้ ( bash -c 'foo'
) (เงื่อนไขจริงค่อนข้างซับซ้อนกว่าเล็กน้อยดูคู่มือ)
- ระบุ
-i
ตัวเลือก
โดยเฉพาะอย่างยิ่ง (และขัดแย้ง) หมายถึงหลังที่bash -ic 'foo'
เริ่มเปลือกโต้ตอบ
ดังนั้นต่อไปนี้จะเริ่มต้นเข้าสู่ระบบ, เชลล์แบบโต้ตอบ, แม้ว่ามันจะไม่มีอะไรเกี่ยวข้องกับมัน, และการร้องขอนั้นไม่เกี่ยวข้องกับการเข้าสู่ระบบ:
bash -lic true
การเข้าสู่ระบบผ่านทางคอนโซลหรือ GUI เริ่มต้นเชลล์การเข้าสู่ระบบ (หรืออาจจะไม่ใช่) นั้นเป็นผลของกระบวนการเข้าสู่ระบบโดยใช้การร้องขอที่เหมาะสม
เงื่อนไขและผลกระทบที่จะมีการอธิบายในรายละเอียดในทุบตีด้วยตนเองส่วนที่เกี่ยวกับไฟล์เริ่มต้น
แหล่งที่มาของความสับสนที่สำคัญคือมีความหมายทั่วไปอีกอย่างสำหรับเชลล์ "ล็อกอิน":
เชลล์ล็อกอินของผู้ใช้คือเชลล์ที่กำหนดไว้ในpasswd
รายการของผู้ใช้นั้น(ซึ่งอาจมาจาก/etc/passwd
LDAP หรือแหล่งอื่น ๆ )
login
โปรแกรม SSH ฯลฯ เริ่มต้นเปลือกนี้เป็นเข้าสู่ระบบเปลือกในแง่ที่มีความหมายในส่วนที่เหลือของคำตอบ - มีชั้นนำ-
ในชื่อคำสั่งที่มักจะ หากคุณต้องการทำให้สับสนโดยเฉพาะคุณสามารถพูดได้ว่า:
กระบวนการล็อกอินบางอย่างจะเริ่มเชลล์ล็อกอินของผู้ใช้เป็นเชลล์ล็อกอิน
โปรดทราบว่าการเข้าสู่ระบบ GUI เริ่มต้นเชลล์การเข้าสู่ระบบอย่างหมดจดเพราะนักพัฒนาคิดว่าสะดวก - LightDM เรียกใช้สคริปต์ในการเข้าสู่ระบบซึ่งเห็นได้ชัดว่าไม่ใช่การโต้ตอบและแน่นอนไม่ขึ้นอยู่กับเชลล์การเข้าสู่ระบบของผู้ใช้ อย่าพึ่งตัวจัดการการแสดงผลที่เริ่มต้นเชลล์การเข้าสู่ระบบ แต่ไม่ใช่ทั้งหมดที่ทำและใน Wayland และ GNOME กระบวนการล็อกอินไม่ได้ใช้เชลล์สคริปต์เลย
non-interactive login shell
มันผิด