Które wybrać - polecenia w stylu BSD lub Unix, jeśli są dostępne?

14

Polecenia takie psmają wiele parametrów, zwłaszcza dlatego, że dają możliwość wyboru między flagami w stylu Unix i BSD. Mam nadzieję, że tu rozumiesz.

Więc kiedy dostępna jest taka opcja, którą wybrać, aby uzyskać maksymalną kompatybilność we wszystkich systemach Linux? (maksymalna kompatybilność jest na przykład jednym z priorytetów)

Wiem, że styl uniksowy jest dość oczywisty, ale polecenia BSD z jakiegoś powodu zawierają bardziej czytelne informacje (np. Tytuły kolumn, kolumna procesora itp.). Oczywiście, popraw mnie, jeśli się mylę, ale tak właśnie czułem.

to ja
źródło

Odpowiedzi:

17

Prawie wszystkie Linuxy używają wersji GNU oryginalnych podstawowych komend Unix, takich jak ps, które, jak zauważyłeś, obsługują zarówno opcje stylu BSD, jak i AT&T.

Ponieważ twoim celem jest kompatybilność tylko z Linuxami, oznacza to, że odpowiedź brzmi: „To nie ma znaczenia”.

Osadzone i inne bardzo małe warianty Linuksa zwykle używają BusyBox zamiast narzędzi GNU, ale w przypadku pstak naprawdę nie ma to wpływu na odpowiedź, ponieważ wersja BusyBox jest tak ograniczona, że ​​nie można jej nazwać ani AT & Tish, ani BSDish.

Z czasem inne systemy Unixy zmniejszyły psróżnice kompatybilności. Mac OS X - który wywodzi się pośrednio z BSD Unix i ogólnie zachowuje się najbardziej podobnie do BSD Unix - akceptuje zarówno psflagi AT & Tish, jak i BSDish .

Solaris / OpenIndiana również zachowuje się w ten sposób, choć jest to mniej zaskakujące, ponieważ ma mieszaną historię BSD i AT&T.

FreeBSD, OpenBSD i NetBSD wciąż działają wyłącznie w stylu BSD.

Im starsze jest pudełko uniksowe, tym bardziej prawdopodobne jest, że akceptuje tylko jeden styl flag. Możesz zapisać różnice na takim pudełku w taki sam sposób, jak teraz: zainstaluj narzędzia GNU, jeśli jeszcze nie zostały zainstalowane.

To powiedziawszy, wciąż są pułapki. psdane wyjściowe nie powinny być parsowane w skryptach, które muszą być przenośne, na przykład, ponieważ systemy Unixy różnią się dostępnymi kolumnami, ilością danych, które system operacyjny jest skłonny udostępnić użytkownikom innym niż root itp.

(Nawiasem mówiąc, zauważ, że jest to „BSD vs. AT&T”, a nie „BSD vs. Unix”. BSD Unix to wciąż UNIX®. BSD Unix dzieli historię bezpośredniego rozwoju z oryginalną gałęzią AT&T. To dzielenie przebiega również w obie strony : AT&T i jego następcy przynieśli innowacje BSD z powrotem do domu w kilku punktach swojej historii. To zjednoczenie w czasie jest częściowo spowodowane staraniami The Open Group i jej poprzedników.)

Warren Young
źródło
Chociaż jest to świetne wyjaśnienie (i odpowiedź), nie pomaga w pytaniu: jakiego stylu powinienem się nauczyć?
Jarl
@Jarl: Najpierw naucz się POSIX. To jest dostępne wszędzie. Następnie dowiedz się, jakie dziwne warianty są używane w najczęściej używanych systemach. Zignoruj ​​resztę.
Warren Young
W przypadku psstylów argumentów, który z nich (BSD lub Unix) to POSIX, to?
Jarl
@Jarl: Zobacz specyfikację . Ogólnie rzecz biorąc, POSIX opiera się bardziej na SysVish niż BSD, ponieważ POSIX był napędzany ekonomicznie, a wszystkie najważniejsze komercyjne uniksy w tamtym czasie były pochodnymi Systemu V.
Warren Young,
0

W razie wątpliwości użyj składni SysV. Zostało to uzgodnione przez wiele osób i jest de facto standardem. Materiał BSD pochodzi z prehistorii lub jest częścią rozbieżnej gałęzi (SysV starał się zakończyć wojny uniksowe, umieszczając wszystkie odmienne linie pod jednym dachem).

vonbrand
źródło
De facto standard dla Linuksa, nie Solaris, * BSD, OSX itp.
chiggsy
Na pewno jest to standard dla Solaris ( pamiętaj, że był to pierwszy SysV). Jest to przestrzegane przynajmniej przez AIX i HP-UX IBM. BSD to hołd dla minionej epoki.
vonbrand
1
Masz rację, że Solaris jest SysV, mój błąd.
chiggsy,
3
Pozytywne, choć kwestionuję dyskredytujące odniesienia do BSD. Robienie rzeczy we właściwy sposób nie jest niczym złym.
chiggsy,
2
-1: Po pierwsze, myślę, że masz na myśli standard de jure . Aby uznać opcje stylu SysV za de facto standard, należy zignorować kilka faktów istnienia: FreeBSD, OpenBSD i NetBSD. Nie można machnąć ręką, by zniknęły z tego argumentu „prehistorii”. Po drugie, Solaris nie był pierwszym systemem V. Być może była to pierwsza komercyjna dostawa SVR4 , ale SVR1 został opracowany dla Vaxen i PDP-11 .
Warren Young,