Standart sözdizimi ve BSD sözdizimi arasındaki fark nedir?


21

Standart sözdizimlerinin yanı sıra bir "BSD sözdizimini" kabul eden birçok komut gördüm. psBir örnek için emri al :

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

Peki bu iki yol arasındaki fark nedir? Genel olarak BSD sözdiziminde ne zaman hatırlamam gerektiğini söyledikleri zaman? Bu sözdizimi sadece BSD'de bulunan komutlar için mi?


Sistemlerin zaman içinde uygulandıkları psoptarjlar arasındaki tarihsel farkları araştırmak, insanın bilmediği bir uçurumun kenarında durmaktır.

Yanıtlar:


18

MS Office ve LibreOffice arasındaki fark nedir? Firefox ve Chrome arasında mı?
Kabaca aynı şeyi yapıyorlar, ancak biraz farklı amaçları olan farklı insanlar tarafından.

Belki de daha iyi soru, BSD, Linux, OSX ve Unix dağıtımlarının neden bu kadar çok komutu paylaşmasıdır ? Bu POSIX uyumluluğuna kadar azalır . POSIX, temel olarak Unix benzeri işletim sistemleri için bir standartlar kümesidir; çekirdek API'yi, komutları ve bu komutların nasıl çalışması gerektiğini belirler.

Durumunda ps(POSIX öngörülen komuta) belli argümanlar talep edilmektedir. Bu BSD olanları içerir. Tüm POSIX türetilmiş komutların kendi man sayfaları vardır, ancak ayrı bir yüklemeye ihtiyaçları vardır. İçin ps:

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

Öyleyse neden BSD bizim kullanmıyor ps(ya da tam tersi)?

  • Bizim pspaketi ( procpsbkz: dpkg -S $(which ps)) bir çatal bir başka procpspakete . Her ikisi de GPL lisanslıdır. Bu, BSD lisansıyla uyumlu değildir, bu nedenle oraya dahil edilemez. ( Biz BSD'lerin içerebilir ama gerekmez).
  • psoldukça çekirdeğe özgüdür. Teknik olarak uyumsuz olduklarını düşünüyorum .

Peki ya diğer uygulamalar?

POSIX uyumluluğu için komutların çoğu Ubuntu'nun coreutilspaketinden geliyor. Bu paket GNU / Linux'taki GNU'yu temsil eder ve GPL lisanslıdır. BSD, POSIX'e bağlı olan, ancak GNU benzerleriyle tamamen aynı olmayan kendi BSD uyumlu lisanslı sürümlerini sunar.

psGNU olmayan tek POSIX komutu değil . Onlardan bir sürü var.

Ben öncülük ettiğim gibi neden olmalılar? Çok, çok uzun bir zaman boyunca farklı insanlar tarafından. Buradaki kısa cevap bu.


20

Bu tarihler arasında biraz dolambaçlı tarihine geri Unix (Vikipedi bir sahiptir basitleştirilmiş şeması olan, uzak mesafede tam). Özellikle, bir süre için iki ana akım vardı: AT&T tarafından geliştirilen System V ve Berkeley'deki California Üniversitesi'nde BSD geliştirildi. Bu, 1980'lerin başındaydı, Linux'tan (1991) çok önce, Ubuntu'dan (2004) bağımsızdı. Genellikle bu iki akım farklı kararlar verdi ve bugün bile “System V” ve “BSD” varyantları veya özellikleri için ara sıra referanslar bulacaksınız.

psKomut tarihleri Unix ilk bültenleri (o, sürüm 1'de değildi online bulabilirsiniz en erken adam sayfası dan birinden geri versiyonunda 5 1974 (s.94)). O zamanlar, pssadece birkaç seçenek vardı; örneğin ps a, sadece kullanıcı yerine tüm süreçleri ve ps xterminal takılı olmadan süreçleri görüntülerdi. Seçeneklerin başlamadığını not edersiniz -: o zaman, -seçeneklerin kullanımına ilişkin kural bugün olduğu gibi sistematik değildi, çoğunlukla dosya isimlerini normal argümanlar olarak alan komutlar için bir şeydi.

Zamanla, Unix'in çeşitli telleri psçok daha fazla seçenekle genişletildi . BSD varyantı hiçbir öncülüğünde, orijinal sözdizimi korumak için seçti -ve ave xbugün hala var. System V değişkeni -, seçeneklerin sözdizimsel kuralını benimsemeyi seçti ve farklı harfler kullandı (örneğin ps -e, tüm işlemleri görüntülemek için ). Oracle (daha önce Sun) Solaris , bir System V varyantının bir örneğidir (Solaris, ayrıca BSD ile yazılmış uygulamalar psiçin varsayılan olmayan bir dizinde ayrı bir yürütülebilir dosya PATHgönderir).

Linux ortaya çıktığında, onu kullanan insanlar genellikle bir Unix varyantı ya da diğerinin önceki deneyimlerine sahip olacaklardı. Linux bazen bazı şeyleri Sistem V yolunda, bazen de BSD yolunda, bazen kendi yolunda, teknik kaygılara dayanarak ya da özelliği uygulayanın tecrübesine ve zevkine dayanarak yaptı. Linux'un pskomutu BSD benzeri seçeneklerle başladı; örneğin ps aetüm işlemleri görüntülemek ve ortam değişkenlerini listeye dahil etmek için. Zaman içinde (1990'ların sonlarında, tam olarak ne zaman olduğunu hatırlamıyorum), Linux'un yazarları psSistem V'e alışmış kişiler için seçenek eklediler. Bugün ya Linux altında tüm süreçleri ps axya ps -elisteleyecek ya da bir ortam değişkeni bile olacak ( PS_PERSONALITY) yapmakps eski senaryolar ve belirlenmiş alışkanlıkları olan insanlar için, çeşitli Unix eski Unix çeşitlerinde olduğu gibi davranın.

Birkaç Unix varyantı kullanan insanlar, bir Unix varyantından diğerine geçiş yaparken programlarını ve alışkanlıklarını değiştirmek zorunda kaldıklarından hoşlanmadılar. Bu nedenle, bir işlevsellik alt kümesini standartlaştırma çabası vardı. Bu , Ubuntu'nun takip ettiği ve takip ettiği POSIX standardına ( IEEE liderliğindeki ) neden oldu . Kapsamı pskomutu içeren ilk baskı 1992'de çıktı; bu çevrimiçi değil, ancak 1997 baskısı . İçin pskomutu gibi birçok diğer durumlarda, POSIX şeyleri yapmanın Sistem V yolu benimsenmiştir.

psKomutun standart sözdizimi Sistemi V ve POSIX ile uyumludur biridir. Ek olarak, -varsayılan olarak seçenekleri tanıtmak için kullandığı için bu sözdiziminin standart olduğu söylenebilir . Bazı seçenekler yalnızca iki sözdiziminden birinde bulunur; Neyse ki aynı çağrıda karıştırılabilirler.

Genel olarak konuşursak, “BSD” ile “Sistem V” arasında herhangi bir teknik ima yoktur. Tarihle ilgilidir: “BSD”, 1980'lerde yapılan BSD'nin seçiminde ne olursa olsun ve buralarda, “System V”, AT&T ve ortaklarının (özellikle de Sun) yaptıkları seçimdir. “POSIX”, IEEE standardizasyon komitesinin yaptığı bir seçimdir.


2

Bahsettiğiniz 'standart' sözdizimi aslında 1980'lerde geliştirilen GNU işletim sistemidir. Günümüzde Linux dağıtımlarının çoğunu (Ubuntu dahil) geliştirmek için GNU tabanlı uygulamalar ve felsefe Linux çekirdeğiyle birleştirildi.

BSD işletim sistemi 1970'lerin sonlarında, GNU'dan bağımsız olarak geliştirildi ve daha sonra FreeBSD veya OpenBSD gibi günümüz versiyonlarına ayrıldı.

Hem GNU hem de BSD, Unix'ten ilham alıyor ve biraz farklı felsefelere, sözdizimlerine vb. Sahipler.


0

Ubuntu'nun coreutils'i bir sürü yük içeren GNU tarafından korunan uygulamaların bir koleksiyonudur (apt-cache show coreutils'e bakın). BSD'lerin kendi sürümleri vardır (GNU, BSD lisansıyla uyumlu değildir).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.