จะเลือกแบบใด - คำสั่ง BSD หรือ Unix แบบที่มี


14

คำสั่งที่psมาพร้อมกับพารามิเตอร์จำนวนมากโดยเฉพาะอย่างยิ่งเนื่องจากพวกเขาให้ใช้ตัวเลือกในการเลือกระหว่างแฟล็กสไตล์ Unix และ BSD ฉันหวังว่าคุณจะได้รับจุดของฉันที่นี่

ดังนั้นเมื่อมีตัวเลือกดังกล่าวฉันควรเลือกความเข้ากันได้สูงสุดกับระบบ linux ทั้งหมดหรือไม่ (ความเข้ากันได้สูงสุดเป็นหนึ่งในลำดับความสำคัญเช่น)

ฉันรู้ว่าสไตล์ Unix ค่อนข้างชัดเจน แต่คำสั่ง BSD ด้วยเหตุผลบางอย่างรวมถึงข้อมูลที่อ่านได้มากขึ้น (เช่นชื่อคอลัมน์คอลัมน์ CPU ฯลฯ ) แน่นอนโปรดแก้ไขให้ฉันถ้าฉันผิด แต่นั่นคือสิ่งที่ฉันรู้สึก

คำตอบ:


17

ลินุกซ์เกือบทั้งหมดใช้คำสั่ง Unix หลักแบบเดิมของ GNU เช่นpsที่คุณจดบันทึกไว้รองรับตัวเลือกสไตล์ BSD และ AT&T

เนื่องจากเป้าหมายที่ระบุไว้ของคุณนั้นเข้ากันได้กับ Linuxes เท่านั้นนั่นหมายความว่าคำตอบคือ "ไม่สำคัญ"

สมองกลฝังตัวและตัวแปรเล็ก ๆ อื่น ๆ ของ Linux มักใช้BusyBoxแทนที่จะเป็นเครื่องมือ GNU แต่ในกรณีของpsมันจะไม่มีผลกับคำตอบเนื่องจากรุ่น BusyBox ถูกถอดลงจึงไม่สามารถเรียกได้ว่า AT & Tish หรือ BSDish

เมื่อเวลาผ่านไประบบ Unixy อื่น ๆ ได้ลดความpsแตกต่างที่เข้ากันได้ Mac OS X - ซึ่งเกิดขึ้นโดยอ้อมจาก BSD Unixและพฤติกรรมทั่วไปมากที่สุดในทำนองเดียวกันกับ BSD Unix ยังคง - ยอมรับทั้ง AT & ทิชและ BSDish psธง

Solaris / OpenIndiana ทำงานในลักษณะนี้เช่นกันแม้ว่าจะไม่น่าแปลกใจเพราะมีประวัติ BSD และ AT&T ผสมกัน

FreeBSD, OpenBSD และ NetBSD ยังคงหลงรักสไตล์ BSD โดยเฉพาะ

กล่อง Unix ที่เก่ากว่ามีโอกาสมากที่จะยอมรับแฟล็กรูปแบบเดียวเท่านั้น คุณสามารถเขียนทับความแตกต่างในกล่องแบบเดียวกันกับที่เราทำตอนนี้: ติดตั้งเครื่องมือ GNU หากยังไม่ได้ติดตั้ง

ที่กล่าวว่ายังคงมีกับดัก psโดยทั่วไปแล้วเอาต์พุตไม่ควรถูกแยกวิเคราะห์ในสคริปต์ที่จำเป็นต้องพกพาตัวอย่างเช่นเนื่องจากระบบ Unixy แตกต่างกันในคอลัมน์ที่มีอยู่จำนวนของข้อมูลที่ระบบปฏิบัติการยินดีให้ผู้ใช้ที่ไม่ใช่ผู้ใช้รูตมองเห็นเป็นต้น

(อย่างไรก็ตามโปรดทราบว่ามันคือ "BSD กับ AT&T" ไม่ใช่ "BSD vs. Unix" BSD Unix ยังคงเป็นUNIX® BSD Unix แบ่งปันประวัติการพัฒนาโดยตรงกับสาขา AT&T ดั้งเดิมการแบ่งปันนั้นไปได้ทั้งสองวิธีเช่นกัน : AT&T และผู้สืบทอดได้นำนวัตกรรม BSD กลับมาบ้านหลายครั้งในประวัติศาสตร์การรวมกันในช่วงเวลานี้เป็นส่วนหนึ่งเนื่องจากความพยายามของThe Open Groupและรุ่นก่อน ๆ )


แม้ว่านี่จะเป็นคำอธิบายที่ดี (และคำตอบ) แต่ก็ไม่ได้ช่วยในคำถาม: ฉันควรเลือกรูปแบบใด
Jarl

@Jarl: เรียนรู้ POSIX ก่อน มีให้ทุกที่ จากนั้นเรียนรู้ว่ามีการใช้ตัวแปรอะไรแปลก ๆ ในระบบที่คุณใช้มากที่สุด ละเว้นส่วนที่เหลือ
Warren Young

ในกรณีของpsรูปแบบการโต้แย้งหนึ่ง (BSD หรือ Unix) เป็น POSIX แล้ว?
Jarl

@Jarl: ดูข้อมูลจำเพาะ โดยทั่วไป POSIX โน้มตัว SysVish มากกว่า BSD เนื่องจาก POSIX เป็นตัวขับเคลื่อนทางเศรษฐกิจและ Unixes เชิงพาณิชย์ที่สำคัญทั้งหมดในเวลานั้นคืออนุพันธ์ของ System V
Warren Young

0

ในกรณีที่มีข้อสงสัยให้ใช้ไวยากรณ์ SysV สิ่งนี้ได้รับการยอมรับจากผู้คนจำนวนมากและเป็นมาตรฐานแบบพฤตินัย สิ่ง BSD ไม่ว่าจะเป็นวันที่จากยุคก่อนประวัติศาสตร์หรือเป็นส่วนหนึ่งของสาขาที่แตกต่างกันบางส่วน (SysV เป็นความพยายามที่จะยุติสงคราม Unix โดยนำสายที่แตกต่างกันทั้งหมดภายใต้หลังคาเดียว)


ความจริงแล้วเป็นมาตรฐานสำหรับ Linux ไม่ใช่ Solaris, * BSD, OSX, และอื่น ๆ
chiggsy

แน่ใจว่ามันเป็นมาตรฐานสำหรับ Solaris (นั่นคือSysV แรกที่จะออกมาจำ) จะได้รับการปฏิบัติตามโดย AIX และ IBM-UX ของ IBM เป็นอย่างน้อย BSD เป็นสิ่งที่ค้างไว้จากยุคอดีต
vonbrand

1
คุณถูกต้องเกี่ยวกับ Solaris ที่เป็น SysV ข้อผิดพลาดของฉัน
chiggsy

3
โหวตขึ้นแม้ว่าฉันจะถามคำถามที่อ้างอิงถึงการดูหมิ่น BSD การทำสิ่งที่ถูกต้องไม่ใช่เรื่องเลวร้าย
chiggsy

2
-1: ก่อนอื่นฉันคิดว่าคุณหมายถึงมาตรฐานทางกฎหมาย ในการพิจารณาตัวเลือกรูปแบบ SysV ตามมาตรฐานของพฤตินัยคุณต้องละเว้นข้อเท็จจริงที่มีอยู่หลายประการ: FreeBSD, OpenBSD และ NetBSD คุณไม่สามารถโบกมือพวกมันให้พ้นจากการมีอยู่ของอาร์กิวเมนต์ "ยุคก่อนประวัติศาสตร์" ประการที่สอง Solaris เป็นไม่ได้เป็นครั้งแรกโวลต์ระบบมันอาจจะได้รับการจัดส่งเชิงพาณิชย์แห่งแรกของSVR4แต่SVR1 รับการพัฒนาสำหรับ Vaxen และ PDP-11
Warren Young
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.