ถ้าผมตรวจสอบเปลือกทุบตีฉันใน 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
อ้างอิง