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 ps
tak 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 ps
róż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 ps
flagi 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. ps
dane 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.)