ถ้าผมตรวจสอบเปลือกทุบตีฉันใน OS X (10.6.4) ขั้วเช่นโดยการพิมพ์มีเส้นประในด้านหน้าของเปลือกของฉันเช่นนี้echo $0 -bashเส้นประนี้หมายถึงอะไร
ถ้าผมตรวจสอบเปลือกทุบตีฉันใน OS X (10.6.4) ขั้วเช่นโดยการพิมพ์มีเส้นประในด้านหน้าของเปลือกของฉันเช่นนี้echo $0 -bashเส้นประนี้หมายถึงอะไร
คำตอบ:
หมายความว่าbashถูกเรียกใช้เป็นเชลล์ล็อกอิน
man bash พูดว่า:
เปลือกเข้าสู่ระบบเป็นหนึ่งที่มีอักขระตัวแรกของศูนย์อาร์กิวเมนต์เป็น
-หรือหนึ่งเริ่มต้นด้วย--loginตัวเลือกเมื่อ bash ถูกเรียกใช้เป็นเชลล์ล็อกอินแบบโต้ตอบหรือเป็นเชลล์ที่ไม่มีการโต้ตอบพร้อมกับ
--loginตัวเลือกมันจะอ่านและเรียกใช้คำสั่งจากไฟล์/etc/profileก่อนหากไฟล์นั้นมีอยู่ หลังจากที่ได้อ่านแฟ้มที่จะมองหา~/.bash_profile,~/.bash_loginและ~/.profileในลำดับที่และอ่านและรันคำสั่งจากคนแรกที่มีอยู่และสามารถอ่านได้--noprofileตัวเลือกที่อาจจะนำมาใช้เมื่อเปลือกจะเริ่มต้นในการยับยั้งการทำงานนี้เมื่อล็อกอินเชลล์ออก bash จะอ่านและดำเนินการคำสั่งจากไฟล์
~/.bash_logoutหากมีอยู่
คุณจะพบผลลัพธ์login -pfของคุณpsซึ่งเริ่มเชลล์การเข้าสู่ระบบตามค่าเริ่มต้น
ลองวิ่งlogin -pfและlogin -pflดูความแตกต่าง man loginอธิบายความแตกต่าง:
-lบอกโปรแกรมดำเนินการโดยการเข้าสู่ระบบที่ว่านี้ไม่ได้เป็นเซสชั่นเข้าสู่ระบบ (โดยการประชุมครั้งที่เข้าสู่ระบบจะส่งสัญญาณไปยังโปรแกรมที่มียัติภังค์เป็นตัวอักษรตัวแรกของargv[0]; นี้ปิดใช้งานตัวเลือกนั้น) และป้องกันไม่ให้มันจากchdir(2)ไอเอ็นจีไปยังไดเรกทอรีบ้านของผู้ใช้ . ค่าเริ่มต้นคือการเพิ่มยัติภังค์ (นี่คือเซสชั่นการเข้าสู่ระบบ)
echo $0: ถ้าฉันพิมพ์echo $0ในเทอร์มินัลที่เรียกใช้โดยctrl + alt + f1ผลลัพธ์คือ-bash; แต่ถ้าฉันพิมพ์ใน termianl เรียกโดยctrl + alt + tผลคือbash(ไม่มีเส้นประนำ) คุณช่วยอธิบายได้ไหม
--loginอาร์กิวเมนต์มันจะไม่เปลี่ยนargv[0]แต่ทำหน้าที่เป็นเปลือกเข้าสู่ระบบ
manอ้างอิง