Szukałem różnicy między adduser
i useradd
, a wyjaśnieniem jest to, że useradd
jest to polecenie, podczas gdy adduser
jest to skrypt perla. Rozumiem, czym jest skrypt Perla, ale nie rozumiem, czym jest command
dokładnie wtedy.
Zawsze myślałem, że polecenia podoba ls
, ln
, cd
itp są wszystkie proste programy napisane w jakimkolwiek języku, który po prostu zrobić jedną rzecz. Jaka jest różnica między tymi „prostymi programami” a skryptem perla?
Wiem oczywiście, że skrypt (perl) nie jest kompilowany, ale interpretowany w czasie wykonywania, ale myślę, że to nie jedyna różnica?
linux
command-line
bash
perl
kramer65
źródło
źródło
Odpowiedzi:
Mówiąc najprościej, polecenie jest instrukcją (lub zestawem instrukcji), które ma wykonać komputer.
Samodzielne polecenia
Podstawowe narzędzia uniksowe, takie jak
ls
,ln
itp. Są (zwykle) napisane w C i skompilowane jako samodzielne programy wykonywalne , które nie wymagają wykonania interpretera; zazwyczaj wymagają pewnych plików biblioteki do zainstalowania w systemie, ale to odpowiedź na inne pytanie.Skrypty
Skrypt to zbiór poleceń, a same skrypty są uważane za polecenia.
Perl skrypt jest ciągiem wypowiedzi Perl i wymaga
perl
wykonywalny (stand-alone i skompilowane) programu do interpretowania sprawozdań Perl.Czasami duże i złożone skrypty interpretacyjne (w językach takich jak Perl, Python i Ruby) są również nazywane programami interpretowanymi, podczas gdy termin skrypt jest zarezerwowany dla krótszych i prostszych skryptów.
Skrypt jest sekwencją innych poleceń (dowolny rodzaj rozkazu) i wymaga Unix powłok takich jak Basha interpretować skryptu. Ze strony podręcznika użytkownika Bash:
Wbudowane powłoki
Powłoki zwykle mają wbudowane polecenia, które nie są ani samodzielnymi programami, ani skryptami. Zamiast tego są częścią samej powłoki i działają bezpośrednio przy niej.
cd
jest przykładem takiej wbudowanej komendy.Czasami istnieją polecenia, które istnieją jako wbudowane powłoki i jednocześnie jako samodzielne polecenia, np
echo
. Polecenie.echo
samodzielnie wykonuje wbudowaną powłokę, podczas gdy samodzielne polecenie można wykonać, podając pełną ścieżkę.Uruchom wbudowaną wersję echa:
Uruchom
echo
program autonomiczny :Uwaga: powyższe szczegóły dotyczą środowiska Unix, ale te same zasady dotyczą środowiska Windows.
źródło
.bat
plikami przez wiele, wiele lat).Wbudowane polecenie jest częścią powłoki. Program jest wykonywany przez powłokę.
http://www.gnu.org/software/bash/manual/bashref.html#Shell-Builtin-Commands
źródło
useradd
nie ma wbudowanej powłoki. Witryna internetowa właśnie powiedziała „polecenie”, a nie „polecenie wbudowane”. W jaki sposób to wyjaśnienie ma znaczenie dla tego pytania?Polecenie oznacza po prostu sposób na poinformowanie aplikacji lub systemu, aby coś zrobił.
Aplikacja zazwyczaj akceptuje wiele różnych poleceń z GUI,
stdin
ale możliwe są inne metody, np. Gniazdo UNIX lub nazwany potok, jakiś interfejs API sieci Web, połączenie RPC lub inny niestandardowy protokół.Aplikację, która wykonuje tylko jedną rzecz, a następnie kończy działanie, zwykle bez GUI, można również nazwać komendą, ponieważ tak naprawdę można tylko „nadać” tej aplikacji jedno znaczące „polecenie”. Tak działają małe programy
ls
i takie są i dlatego nazywane są komendami.Ale nie nazwałbyś Photoshopa poleceniem, ale z pewnością wydawałbyś w nim polecenia poprzez GUI.
Jednak termin ten może oznaczać różne rzeczy dla różnych ludzi. W twoim przykładzie komenda służy do opisania pliku wykonywalnego uruchamianego bezpośrednio, a nie pliku wymagającego interpretera skryptów do pracy. To rozróżnienie może być ważne, ponieważ kiedy uruchamiasz skrypt Perla,
/usr/bin/perl
jest to plik binarny, który faktycznie działa (więc jeśli chcesz zabić długo działający skrypt Perla, to właśnie tego musisz szukaćps
). Jednak większość powłok ma wbudowane polecenia, które są poleceniami samej powłoki i nie powodują uruchomienia zewnętrznego pliku wykonywalnego. Na przykładcd
jest obsługiwanybash
sam i nie wywołuje/sbin/cd
ani nie jest podobny.źródło