คำสั่ง Linux สามารถใช้แทนคำสั่ง Unix ได้หรือไม่?


21

ฉันพบว่าคำสั่งบางคำสั่งlsและpwdสามารถใช้ได้กับทั้งระบบ Linux และ Unix

  • มันคือคำสั่ง Linux ทั้งหมดที่สามารถใช้ในระบบ Unix และคำสั่ง Unix ทั้งหมดสามารถใช้ใน Linux ได้หรือไม่?
  • หรือเพียงแค่ว่าคำสั่ง Linux ทั้งหมดสามารถทำงานบน Unix ได้ แต่ไม่ใช่คำสั่ง Unix ทั้งหมดที่สามารถทำงานบน Linux ได้
  • หรือว่าคำสั่ง Unix ทั้งหมดสามารถเรียกใช้บน Linux แต่ไม่ใช่คำสั่ง Linux ทั้งหมดที่สามารถทำงานบน Unix ได้หรือไม่
  • หรือมีการอ้างอิงเพื่อแสดงให้ฉันเห็นว่าคำสั่งใดที่สามารถทำงานได้ทั้งบน Linux และ Unix และที่ทั้งสองมีคำสั่งเฉพาะของตัวเอง?

28
อ่านเกี่ยวกับ "POSIX"
Daniel Andersson

1
โปรดทราบว่าไม่ใช่คำสั่ง "Linux" แต่เป็นคำสั่ง GNU ตัวอย่างเช่นเครื่องมือ GNU สามารถติดตั้งได้บน FreeBSD
new123456

2
Heck เครื่องมือ GNU สามารถติดตั้งได้บน Unix
MSalters

คำตอบ:


37

ความคิดเห็นของ Daniel Andersson เกี่ยวกับ POSIX คือคำตอบที่แท้จริงที่นี่: มีมาตรฐานที่เรียกว่า POSIX ซึ่งกำหนดหลักของระบบที่คล้าย UNIX ทั้งในแง่ของคำสั่งเชลล์และการเรียกระบบ ในทางทฤษฎีถ้าคุณเขียนซอฟต์แวร์ไปยังข้อมูลจำเพาะ POSIX มันเป็นไปได้ที่จะรวบรวมและเรียกใช้บนระบบ UNIX, Linux, BSD และอื่น ๆ

http://pubs.opengroup.org/onlinepubs/009695399/mindex.htmlจะให้คำตอบที่ชัดเจนเกี่ยวกับสิ่งที่ถือเป็น POSIX แต่นั่นไม่ใช่คำตอบที่เป็นประโยชน์สำหรับการใช้งานจริง บางคนอาจมีการอ้างอิงคำสั่งที่ดีสำหรับความแตกต่างทั่วไประหว่างระบบ Linux และระบบอื่นที่คล้ายกับ UNIX

ตัวอย่างหนึ่งที่ระบุ: "killall" บน Linux จะฆ่ากระบวนการทั้งหมดด้วยชื่อเฉพาะ บน Solaris จะปิดระบบ ข้อสำคัญไม่ควรใช้งานผิดประเภท


10
@ tchrist- ถ้าคุณคิดอย่างนั้นจริงๆให้พิมพ์ "sudo apt-get" บน Mac OS X และดูว่ามันทำให้คุณรู้สึกได้ไกลแค่ไหน
David Robinson

7
@tchrist เมื่อ Ted Wong พูดถึงลีนุกซ์เขาเห็นได้ชัดว่าเขาพูดถึงระบบปฏิบัติการที่รู้จักกันในนาม GNU / Linux และมันมีชื่อในชื่อ"GNU's Not Unix!" ;)
João Portela

4
ที่จริงแล้วฉันเข้าใจแล้วว่า Mac OS X IS เป็น Unix ที่ผ่านการรับรอง - เป็นสิ่งที่น้อยมาก (ถ้ามี) ของ Linux รุ่นต่างๆที่ประสบความสำเร็จ เห็นได้ชัดว่านี่จะเป็นเพียงเรื่องของการรับรองมาตรฐานขั้นพื้นฐานมาก
Bill K

2
@tchrist L inux ฉัน s N OT UพรรณีX
เดฟ

4
@Dave Bah อย่าอ่อนแอ โทรจอบจอบเป็นและจำไว้ว่าดอกกุหลาบชื่ออื่น ๆ ยังจะมีกลิ่นหอมหวาน Hie เจ้ากับกล่อง Windows และ Unix เรียนรู้สิ่งที่เป็นไม่ได้ แต่แน่นอนว่า Linux เป็น Unix catcat
tchrist

18

การแจกจ่ายลีนุกซ์ส่วนใหญ่ในปัจจุบันมาพร้อมกับซอฟต์แวร์ GNU ที่จำเป็นและ GNU Toolchain จำนวนมาก GNU เป็นโครงการที่จะเขียนสำเนา Unix ที่อิสระเสรีโดยอิสระซึ่งต่อมาถูกจับคู่กับเคอร์เนล Linux เมื่อคุณใช้lsบนเครื่อง Unix คุณกำลังใช้เดิม / lsสิ่งที่กลายเป็นของเดิม เมื่อคุณใช้lsบน GNU / Linux คุณกำลังใช้ GNU ซึ่งเขียนจากรอยขีดข่วนที่จะเป็นเช่นเดียวกับls lsอย่างไรก็ตามซอฟต์แวร์ GNU บางตัวนั้นไม่ตรงกับของ Unix ตอนนี้ Unix ได้เปลี่ยนเป็น BSD แล้ว GNU / Linux distros อาจมีรุ่น BSD ของเครื่องมือนั้น ตัวอย่างเช่นbsdtarและtarเข้ามาในใจ

tl; dr: พวกเขาไม่ใช่รหัสเดียวกัน แต่พวกเขาส่วนใหญ่เหมือนกันทุกประการ


2
สำหรับความแตกต่างpsเป็นตัวอย่างที่น่ารำคาญที่สุดที่ฉันนึกได้ สวิตช์ที่แตกต่างกันในระบบที่แตกต่างกัน (Linux, AIX และ Solaris) รูปแบบผลลัพธ์ที่ต่างกัน แม้ว่าวัตถุประสงค์ของคำสั่งนั้นจะเหมือนกันในทุกระบบ
elmo

5

คุณไม่ได้ระบุ UNIX ที่คุณกำลังพูดถึง (BSD, System V ... ) ไม่มีคำตอบสากล (UNIX) ตัวแปร UNIX แต่ละตัวมีคำสั่งที่กำหนดเอง (เช่น Mac OS X) ดังนั้นแม้ระหว่าง UNIX จะมีคำสั่งต่างกัน โดยปกติคำสั่งเก่า (เช่น ls, pwd, cd, cp, mv, rm ... ) มักจะเหมือนกันในทุกรสชาติของ UNIX (รวมถึง Linux)



4

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

เป็นตัวอย่างของซีดีกู้คืน / ฉุกเฉินส่วนใหญ่ที่คุณสามารถบูทได้จากดิสทริบิวเตอร์แบบเพรียวบางคุณจะพบว่าคำสั่งทั่วไปบางอย่างอาจไม่มีในระบบเหล่านี้เนื่องจากเป็นกรณีที่ไม่จำเป็นต้องใช้ในกรณีส่วนใหญ่


3

บนโซลาริสคุณต้องเพิ่ม/usr/gnu/binเส้นทางของคุณหรือแลกเปลี่ยนกับ/usr/binชุดคำสั่งของคุณจะคล้ายกันมาก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.