Linux jest jądrem, nie ma poleceń. Niektóre dystrybucje oprogramowania zbudowane dla tego jądra są zgodne ze standardem LSB, niektóre inne zasady Debiana, większość innych w szczególności nie.
Stéphane Chazelas,
@ StéphaneChazelas Chociaż zgadzam się, powiedziałbym, że przestrzeganie zasad Debiana jest zbliżone do śledzenia LSB, ponieważ Debian obsługuje LSB (jeśli nie domyślnie, nadal za pośrednictwem lsbpakietu).
Technicznie nie można zakładać niczego , ponieważ Linux-the-kernel przyzwyczaja się w całą masę wbudowanych lub częściowo osadzone kontekstach gdzie pełny zestaw narzędzi powłokowych byłyby bezcelowe marnowanie miejsca. Jeśli zastanawiasz się, czego możesz się spodziewać w „normalnym” środowisku powłoki kompatybilnym z Uniksem, nie patrzę na POSIX ani LSB, ale na zestaw pakietów, które Debian uważa za „wymagane”. Wiele niezbędnych narzędzi do zarządzania systemem, np. „Ip”, w ogóle nie jest standaryzowanych.
ar echo hostname more sh
at egrep install mount shutdown
awk fgrep install_initd msgfmt su
batch file ipcrm newgrp sync
bc fuser ipcs od tar
chfn gettext killall passwd umount
chsh grep lpr patch useradd
col groupadd ls pidof userdel
cpio groupdel lsb_release remove_initd usermod
crontab groupmod m4 renice xargs
df groups md5sum sed zcat
dmesg gunzip mknod sendmail
du gzip mktemp seq
Wiele programów „tylko z LSB” pochodzi z POSIX. Należą do nich: awk, grep, ls, sed, sh, xargs na pewno; Musiałbym sprawdzić ar, at, batch, bc, crontab. Mogą być też inni.
Jonathan Leffler,
@JonathanLeffler Musiałem popełnić błąd w wyrażeniu regularnym. Naprawię to, kiedy będę mógł.
muru
NP. Użyłbym albo strony najwyższego poziomu POSIX 2008 (2013), albo konkretnie listy narzędzi . Obejmuje wszystkie wymienione przeze mnie możliwości; Widzę też file, ipcrm, ipcs,m4 , patch, i zcatwymienione - to operacja eyeballing raczej niż formalna weryfikacja list.
Technicznie rzecz biorąc, nie możesz zakładać, że coś będzie obecne, ponieważ jądro Linuksa jest używane w całej gamie kontekstów osadzonych lub częściowo osadzonych, w których pełny zestaw narzędzi powłoki byłby bezcelową stratą miejsca. Nie byłoby wykluczone na przykład zbudowanie urządzenia IoT, którego system plików zawiera bootloader, monolityczne jądro, zwyczaj, /sbin/initktóry robi wszystko, co urządzenie będzie kiedykolwiek musiało zrobić, kilka /devwpisów i nic więcej .
Specyfikacja POSIX.1-2008 „Shell and Utilities” , również powiązana z odpowiedzią muru, ma na celu ustandaryzowanie powłoki jako języka programowania . Dlatego nie zawiera większości narzędzi do administrowania systemem, które, jak się oczekuje, będą obecne w „tradycyjnej” instalacji Uniksa. Niestety, jest to również widoczna pozostała blizna starożytnej schizmy między Systemem V a BSD - narzędzia, które znajdziesz w Linuksie, nie są takie same jak narzędzia we FreeBSD, OSX lub cokolwiek innego. Zatem znowu nie ma wiarygodnej linii bazowej.
Aby wskazać, czego brakuje w odpowiedzi maru, jest to zestaw pakietów, które Debian (niestabilny) uważa za „wymagane” ( oficjalna definicja : „Systemy z tylko wymaganymi pakietami są prawdopodobnie nieużyteczne, ale mają wystarczającą funkcjonalność aby umożliwić administratorowi systemu uruchomienie i instalacji dodatkowego oprogramowania. ") i które przyczyniają się do plików /bin, /sbin, /usr/bin, lub /usr/sbin. Oznaczone gwiazdką są nie tylko „wymagane”, ale „niezbędne”, co oznacza, że inne oprogramowanie w pakiecie może przejąć swoją obecność bez względu na to.
¹ awk-the-language jest „niezbędny”, ale sysadmin może wybrać, czy chce implementacji „mawk” czy „gawk”.
I to są pakiety uważane za „ważne”; oficjalna definicja „ważnego” to „doświadczona osoba uniksowa, która zginęła, powiedziałaby:„ Co u licha się dzieje, gdzie jest foo? ””:
Zauważ, że ten drugi zestaw zawiera krytyczne narzędzia do administrowania systemem, takie jak psi iproute2, ale także rzeczy, które mogą być całkowicie niepotrzebne w niektórych instalacjach, takich jak ati dmidecode. Oba zestawy zawierają także rzeczy specyficzne dla Debiana, takie jak dpkgi apt.
Zauważ też, że oba zestawy razem nie są nadzbiorem funkcjonalności wymaganej przez LSB (lub POSIX + XSI w tym przypadku): brakuje tych narzędzi:
ar gencat lpr msgfmt strings
bc gettext lsb_release patch strip
ed install_initd m4 pax time
file killall mailx remove_initd
fuser lp make sendmail
Lista narzędzi, które znajdują się w powyższych pakietach, ale nie w LSB, jest długa i żmudna, ale i tak dołączam ją, aby podkreślić, ile zawiera „krytycznych narzędzi do administrowania systemem”.
Wszechstronny. Chciałbym zauważyć, że Adduser (i rodzina) Debiana to ... Debian. Arch używa Slackware, który jest zupełnie inny. Nazywam go tylko dlatego, że nie brzmi to specyficznie dla Debiana, ale mimo to przypomina ippolecenie, o którym wspominałeś wcześniej.
Jednak wiele osób przegląda zawartość katalogów wyświetlanych przez, echo $PATHa następnie patrzy na stronę podręcznika użytkownika, aby uzyskać więcej informacji.
Przeglądając katalogi, dowiesz się, co zawiera Twoja konkretna dystrybucja, nie powie, co powinno być. Jak byś powiedział, patrząc tam, że czegoś brakuje?
busybox --list
. Żartuję.lsb
pakietu).Odpowiedzi:
Linux Standard Base (LSB) ma listę aplikacji :
Wiele z nich jest uwzględnionych jako część standardu POSIX 1003.1-2001 , ale następujące są albo tylko w LSB, albo mają inne specyfikacje niż POSIX:
źródło
file
,ipcrm
,ipcs
,m4
,patch
, izcat
wymienione - to operacja eyeballing raczej niż formalna weryfikacja list.Technicznie rzecz biorąc, nie możesz zakładać, że coś będzie obecne, ponieważ jądro Linuksa jest używane w całej gamie kontekstów osadzonych lub częściowo osadzonych, w których pełny zestaw narzędzi powłoki byłby bezcelową stratą miejsca. Nie byłoby wykluczone na przykład zbudowanie urządzenia IoT, którego system plików zawiera bootloader, monolityczne jądro, zwyczaj,
/sbin/init
który robi wszystko, co urządzenie będzie kiedykolwiek musiało zrobić, kilka/dev
wpisów i nic więcej .Specyfikacja POSIX.1-2008 „Shell and Utilities” , również powiązana z odpowiedzią muru, ma na celu ustandaryzowanie powłoki jako języka programowania . Dlatego nie zawiera większości narzędzi do administrowania systemem, które, jak się oczekuje, będą obecne w „tradycyjnej” instalacji Uniksa. Niestety, jest to również widoczna pozostała blizna starożytnej schizmy między Systemem V a BSD - narzędzia, które znajdziesz w Linuksie, nie są takie same jak narzędzia we FreeBSD, OSX lub cokolwiek innego. Zatem znowu nie ma wiarygodnej linii bazowej.
Aby wskazać, czego brakuje w odpowiedzi maru, jest to zestaw pakietów, które Debian (niestabilny) uważa za „wymagane” ( oficjalna definicja : „Systemy z tylko wymaganymi pakietami są prawdopodobnie nieużyteczne, ale mają wystarczającą funkcjonalność aby umożliwić administratorowi systemu uruchomienie i instalacji dodatkowego oprogramowania. ") i które przyczyniają się do plików
/bin
,/sbin
,/usr/bin
, lub/usr/sbin
. Oznaczone gwiazdką są nie tylko „wymagane”, ale „niezbędne”, co oznacza, że inne oprogramowanie w pakiecie może przejąć swoją obecność bez względu na to.¹ awk-the-language jest „niezbędny”, ale sysadmin może wybrać, czy chce implementacji „mawk” czy „gawk”.
I to są pakiety uważane za „ważne”; oficjalna definicja „ważnego” to „doświadczona osoba uniksowa, która zginęła, powiedziałaby:„ Co u licha się dzieje, gdzie jest foo? ””:
Zauważ, że ten drugi zestaw zawiera krytyczne narzędzia do administrowania systemem, takie jak
ps
iiproute2
, ale także rzeczy, które mogą być całkowicie niepotrzebne w niektórych instalacjach, takich jakat
idmidecode
. Oba zestawy zawierają także rzeczy specyficzne dla Debiana, takie jakdpkg
iapt
.Zauważ też, że oba zestawy razem nie są nadzbiorem funkcjonalności wymaganej przez LSB (lub POSIX + XSI w tym przypadku): brakuje tych narzędzi:
Lista narzędzi, które znajdują się w powyższych pakietach, ale nie w LSB, jest długa i żmudna, ale i tak dołączam ją, aby podkreślić, ile zawiera „krytycznych narzędzi do administrowania systemem”.
źródło
ip
polecenie, o którym wspominałeś wcześniej.Wikipedia: Lista poleceń Unix i linuxconfig: Linux Commands z pewnością są warte obejrzenia.
Jednak wiele osób przegląda zawartość katalogów wyświetlanych przez,
echo $PATH
a następnie patrzy na stronę podręcznika użytkownika, aby uzyskać więcej informacji.źródło