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

19

Standart sözdiziminin yanı sıra bir "BSD sözdizimi" kabul eden birçok komut gördüm. Bir örnek için ps komutunu alın:

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 rota arasındaki fark nedir? Genelde BSD sözdiziminde söyledikleri zaman hangi elementleri hatırlamam gerekir? Bu sözdizimi sadece BSD'de bulunan komutlar için mi?

    
sordu Mohammad Reza Rezwani 18.06.2014 13:18

4 cevap

17

MS Office ve LibreOffice arasındaki fark nedir? Firefox ve Chrome arasında?
Kabaca aynı şeyi yapıyorlar, ama onlar farklı insanlarla biraz farklı hedeflere sahipler.

Belki de daha iyi soru BSD, Linux, OSX ve Unix dağıtımlarının neden bu kadar çok paylaştığını POSIX uyumluluğu. POSIX, Unix benzeri işletim sistemleri için temel olarak bir dizi standarttır; çekirdek API'yi, komutları ve bu komutların nasıl çalışması gerektiğini şart koşar.

ps durumunda (POSIX tarafından belirlenen bir komut), bazı argümanlar istenir. Bunlar BSD olanları içerir. Tüm POSIX türetilmiş komutların kendi adam sayfaları vardır, ancak ayrı bir yüklemeye ihtiyaçları vardır. % Co_de% için:

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

Öyleyse BSD neden ps (veya tersi) kullanıyor?

  • ps paketimiz ( ps bakın: procps ) bir çataldır diğer dpkg -S $(which ps) paketi . Her ikisi de GPL lisanslıdır. Bu BSD'nin lisansıyla uyumlu değil, o yüzden buraya dahil edilemez. ( Biz BSD'leri içerebilir, ancak buna gerek yoktur).
  • procps , oldukça çekirdeğe özgüdür. Teknik olarak uyumsuz olduklarını düşünüyorum.

Diğer uygulamalar nedir?

POSIX uyumluluğu için komutların çoğu Ubuntu'nun ps paketinden gelir. Bu paket GNU / Linux'ta GNU'yu temsil eder ve ayrıca GPL lisanslıdır. BSD, kendi BSD uyumlu lisanslı sürümlerini POSIX'e yapıştıran ancak mutlaka GNU muadilleri ile tamamen aynı değildir.

coreutils , GNU olmayan tek POSIX komutu değil . Onlardan bir sürü var.

Birlikte olduğum gibi, neden olmalılar? Çok, çok uzun bir süre boyunca farklı insanlar tarafından. Buradaki kısa cevap bu.

    
verilen cevap Oli 18.06.2014 13:35
18

Bu, geçmişe dönük bir şekilde Unix geçmişine dayanır. (Wikipedia'nın uzak olan en.wikipedia.org/wiki/File%3aUnix_history-simple.svg"> basitleştirilmiş diyagramı tamamlandı . Özellikle, bir süre için, iki ana akım vardı: AT & amp; T tarafından geliştirilen System V ve BSD . Bu, Ubuntu'nun (2004) bırakmasına rağmen, Linux'un (1991) çoktan önce, 1980'lerin başlarındaydı. Çoğunlukla bu iki akım farklı kararlar verdiler ve bugün bile “Sistem V” ve “BSD” varyantları ya da özellikleri ile ilgili referansları bulabilirsiniz.

ps komutu, Unix'in ilk sürümlerinden birinden (sürüm 1'de değildi, çevrimiçi bulabildiğim en eski adam sayfası sürüm 5 (s.94) 1974). O anda, ps birkaç seçeneğe sahipti, örneğin ps a 'si sadece kullanıcının yerine tüm süreçleri gösterecek ve ps x terminal eklenmemiş işlemleri gösterecektir. Seçeneklerin - ile başlayamadığına dikkat edin: o anda, seçenekler için - kullanma sözleşmesi, bugün olduğu gibi neredeyse sistematik değildi, çoğunlukla dosya alan komutlar için bir şeydi. normal argümanlar olarak adlandır.

Zaman içinde, çeşitli Unix dizileri ps daha fazla seçenekle genişletilmiş. BSD varyantı, orijinal sözdizimini kullanmaya devam etmeyi seçti, - 'si yok ve a ve x bugün hala var. System V varyantı, seçenekler için - sözdizimi kuralı benimsemeyi seçti ve farklı harfler kullandı (örneğin, tüm işlemleri görüntülemek için ps -e ). Oracle (eskiden Sun) Solaris , bir System V varyantının bir örneğidir (Solaris ayrıca, BSD ile yazılan uygulamalar için varsayılan ps değerinde olmayan bir dizinde ayrı bir PATH yürütülebilir dosyasını da gönderir.)

Linux sahneye geldiğinde, onu kullanan insanlar genellikle bir Unix varyantı ya da diğeriyle ilgili daha önce deneyime sahip olacaktı. Linux bazen Sistem V yolunu, bazen BSD yolunu, bazen teknik değerlendirmelere dayanan veya özelliği uygulayan herkesin deneyimine ve zevklerine dayanan kendi yolunu yaptı. Linux'un ps komutu BSD benzeri seçenekler ile başlatıldı, ör. Tüm işlemleri görüntülemek ve listelenen ortam değişkenlerini içermek için ps ae . Zaman içinde (1990'ların sonunda, tam olarak ne zaman olduğunu hatırlamıyorum), Linux'un yazarlarının ps 'si Sistem V'te kullanılan kişiler için seçenekler ekledi. Bu yüzden bugün ya ps ax ya da ps -e altında tüm süreçler listelenecek. Linux, ve PS_PERSONALITY 'in eski scriptler ve set alışkanlıklarına sahip insanlar için çeşitli Unix eski Unix türevleri gibi davranmasını sağlayan bir ortam değişkeni ( ps ) bile var.

Birkaç Unix türünü kullanan kişiler, bir Unix türünden diğerine geçiş yaparken programlarını ve alışkanlıklarını değiştirmek zorunda kalacaklarını beğenmedi. Yani, bir işlevsellik alt kümesini standartlaştırmak için bir çaba vardı. Bu, POSIX standardına yol açtı. IEEE ). Kapsamı ps komutu içeren ilk baskı 1992'de çıktı; Bu çevrimiçi olarak mevcut değildir, ancak 1997 sürümü . Diğer birçok durumda olduğu gibi, ps komutu için POSIX, bir şeyler yapmanın System V yöntemini benimsedi.

ps komutunun standart sözdizimi, System V ve POSIX ile uyumlu olan bir standart sözdizimidir. Ayrıca, sözdizimi standart olarak söylenebilir çünkü varsayılan olarak seçenekleri tanıtmak için - kullanır. Bazı seçenekler sadece iki sözdiziminden birinde bulunur; Neyse ki aynı aramayla karışabilirler.

Genel olarak, "BSD" ve "Sistem V" nin herhangi bir teknik anlamı yoktur. Tarihe atıfta bulunur: “BSD”, BSD'nin 1980'lerde seçtiği bir seçim olup, “Sistem V”, ATT'nin ve ortaklarının (özellikle Güneş'in) yaptığı her türlü seçimdir. “POSIX”, IEEE standardizasyon komitesi tarafından yapılan seçimdir.

    
verilen cevap Gilles 18.06.2014 17:18
2

Sözünü ettiğin 'standart' sözdizimi aslında 1980'lerde geliştirilen GNU işletim sistemidir. En modern gün Linux dağıtımlarını (Ubuntu dahil) geliştirmek için GNU tabanlı yardımcı programlar ve felsefe Linux çekirdeği ile birleştirildi.

BSD işletim sistemi, 1970'lerin sonunda, GNU'dan bağımsız olarak geliştirildi ve daha sonra FreeBSD veya OpenBSD gibi modern gün sürümlerine ayrıldı.

Hem GNU hem de BSD, Unix'den ilham alır ve biraz farklı felsefe, sözdizimi, vb. vardır.

    
verilen cevap Alex B 18.06.2014 13:32
0

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

    
verilen cevap Hadi 18.06.2014 17:18

Etiketlerdeki diğer soruları oku