Apa perbedaan antara sintaks standar dan sintaks BSD?

21

Saya telah melihat banyak perintah yang menerima "sintaks BSD" serta sintaks standarnya. Ambil psperintah untuk satu contoh:

To see every process on the system using standard syntax:
      ps -e
      ps -ef
      ps -eF
      ps -ely

To see every process on the system using BSD syntax:
      ps ax
      ps axu

Jadi apa perbedaan antara dua rute ini? Secara umum ketika mereka mengatakan dalam sintaks BSD elemen apa yang harus saya ingat? Apakah sintaks ini hanya untuk perintah-perintah yang ada di BSD juga?

Mohammad Reza Rezwani
sumber
Untuk menyelidiki perbedaan historis antara bagaimana sistem melalui waktu diterapkan psoptargs adalah berdiri di tepi jurang yang tidak diketahui manusia.

Jawaban:

18

Apa perbedaan antara MS Office dan LibreOffice? Antara Firefox dan Chrome?
Mereka melakukan hal yang kira-kira sama, tetapi mereka dilakukan oleh orang yang berbeda dengan tujuan yang sedikit berbeda.

Mungkin pertanyaan yang lebih baik adalah mengapa BSD, Linux, OSX dan Unix distribusi berbagi begitu banyak perintah? Ini bermuara pada kepatuhan POSIX . POSIX pada dasarnya adalah seperangkat standar untuk sistem operasi mirip Unix; itu menetapkan API inti, perintah dan bagaimana perintah itu harus bekerja.

Dalam kasus ps(perintah POSIX-ditentukan) argumen tertentu diminta. Ini termasuk yang BSD ini. Semua perintah yang diturunkan dari POSIX memiliki halaman manual mereka sendiri tetapi mereka membutuhkan instalasi terpisah. Untuk ps:

sudo apt-get install manpages-posix
man 1posix ps

Jadi mengapa BSD tidak menggunakan ps(atau sebaliknya) kami?

  • Kami pspaket ( procpslihat: dpkg -S $(which ps)) adalah sebuah garpu dari yang lain procpspaket . Keduanya ini berlisensi GPL. Ini tidak sesuai dengan lisensi BSD sehingga tidak dapat disertakan di sana. ( Kita bisa memasukkan BSD tetapi tidak perlu).
  • pscukup spesifik untuk kernel. Saya rasa mereka secara teknis tidak kompatibel.

Bagaimana dengan aplikasi lain?

Sebagian besar perintah untuk kepatuhan POSIX berasal dari coreutilspaket Ubuntu . Paket ini mewakili GNU dalam GNU / Linux dan juga berlisensi GPL. BSD mengirimkan versi BSD-kompatibel-lisensi sendiri yang mematuhi POSIX tetapi tidak sepenuhnya sama dengan rekan-rekan GNU mereka.

psbukan satu-satunya perintah POSIX yang bukan GNU . Ada banyak dari mereka.

Saat saya memimpin, mengapa mereka harus demikian? Mereka oleh orang yang berbeda dalam waktu yang sangat, sangat lama. Itulah jawaban singkatnya di sini.

Oli
sumber
20

Ini berawal dari sejarah Unix yang agak berliku-liku (Wikipedia memiliki diagram yang disederhanakan , yang jauh dari lengkap). Secara khusus, untuk sementara, ada dua arus utama: Sistem V dikembangkan oleh AT&T, dan BSD dikembangkan di University of California, Berkeley. Ini sekitar awal 1980-an, jauh sebelum Linux (1991), apalagi Ubuntu (2004). Seringkali kedua arus ini membuat keputusan yang berbeda, dan bahkan hari ini Anda akan menemukan referensi sesekali untuk varian atau fitur "Sistem V" dan "BSD".

The pstanggal perintah kembali dari salah satu rilis pertama Unix (bukan dalam versi 1, orang halaman awal saya dapat menemukan online adalah dari versi 5 (hal.94) pada tahun 1974). Pada saat itu, pshanya memiliki beberapa opsi, misalnya ps aakan menampilkan semua proses, bukan hanya pengguna, dan ps xakan menampilkan proses tanpa terminal terpasang. Anda akan perhatikan bahwa opsinya tidak dimulai dengan -: pada saat itu, konvensi penggunaan -opsi tidak mendekati sistematis seperti saat ini, sebagian besar adalah perintah yang menggunakan nama file sebagai argumen normal.

Seiring waktu, berbagai helai Unix diperpanjang ps dengan lebih banyak opsi. Varian BSD memilih untuk mempertahankan sintaksis aslinya, tanpa pimpinan -, dan adan xmasih ada sampai sekarang. Varian Sistem V memilih untuk mengadopsi konvensi sintaksis -untuk opsi, dan menggunakan huruf yang berbeda (misalnya ps -euntuk menampilkan semua proses). Oracle (sebelumnya Sun) Solaris adalah contoh dari varian System V (Solaris juga mengirimkan psexecutable terpisah , dalam direktori yang tidak pada standarnya PATH, untuk aplikasi yang ditulis dengan mempertimbangkan BSD).

Pada saat Linux muncul, orang-orang yang menggunakannya sering kali memiliki pengalaman satu varian Unix. Linux terkadang melakukan hal-hal dengan cara System V, kadang-kadang dengan cara BSD, kadang-kadang dengan caranya sendiri, baik berdasarkan pertimbangan teknis atau berdasarkan pengalaman dan selera siapa pun yang mengimplementasikan fitur tersebut. psPerintah Linux dimulai dengan opsi seperti BSD, misalnya ps aeuntuk menampilkan semua proses dan memasukkan variabel lingkungan dalam daftar. Seiring waktu (pada akhir 1990-an, saya tidak ingat persis kapan), penulis psopsi tambahan Linux untuk orang-orang yang terbiasa dengan Sistem V. Jadi hari ini baik ps axatau ps -eakan daftar semua proses di Linux, dan bahkan ada variabel lingkungan ( PS_PERSONALITY) untuk membuatps berperilaku lebih seperti berbagai varian Unix lama, demi skrip lama dan orang-orang dengan kebiasaan tertentu.

Orang yang menggunakan beberapa varian Unix tidak suka bahwa mereka harus memodifikasi program dan kebiasaan mereka ketika beralih dari satu varian Unix ke varian lain. Jadi ada upaya untuk membakukan subset fungsionalitas. Ini mengarah pada standar POSIX (dipimpin oleh IEEE ), yang pada umumnya diikuti oleh Ubuntu. Edisi pertama yang ruang lingkupnya termasuk psperintah keluar pada tahun 1992; yang ini tidak tersedia online, tetapi edisi 1997 adalah. Untuk psperintah, seperti dalam banyak kasus lain, POSIX mengadopsi cara Sistem V melakukan sesuatu.

The pssintaks perintah standar ini adalah salah satu yang kompatibel dengan System V dan POSIX. Selain itu, sintaksis itu dapat dikatakan standar karena digunakan -untuk memperkenalkan opsi secara default. Beberapa opsi hanya ada di salah satu dari dua sintaksis; untungnya mereka bisa dicampur dalam panggilan yang sama.

Secara umum, "BSD" vs "System V" tidak memiliki implikasi teknis. Ini merujuk pada sejarah: "BSD" adalah pilihan apa pun yang dibuat BSD pada 1980-an dan sekitar itu, "Sistem V" adalah pilihan apa pun yang dipilih AT&T dan mitra mereka (terutama Sun). "POSIX" adalah pilihan apa pun yang dibuat oleh komite standardisasi IEEE.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
2

Sintaks 'standar' yang Anda maksudkan sebenarnya adalah sistem operasi GNU yang dikembangkan pada 1980-an. Utilitas dan filosofi berbasis GNU digabungkan dengan kernel Linux untuk mengembangkan distribusi Linux paling modern (termasuk Ubuntu).

Sistem operasi BSD dikembangkan pada akhir 1970-an, independen dari GNU, dan kemudian bercabang ke versi modern seperti FreeBSD atau OpenBSD.

GNU dan BSD keduanya diinspirasi oleh Unix dan mereka memiliki filosofi, sintaksis yang sedikit berbeda, dll.

Alex B
sumber
0

Coreutils Ubuntu adalah kumpulan aplikasi yang dikelola GNU yang menyertakan banyak hal (lihat apt-cache show coreutils). BSD memiliki versinya sendiri (GNU tidak kompatibel dengan lisensi BSD).

Hadi
sumber