Dlaczego Windows i Ubuntu mają podobne polecenia powłoki?

14

Ubuntu ma bash (Bourne Again SHell), podczas gdy Windows ma swoją zastrzeżoną powłokę. Według moich badań nie ma nazwy języka używanego do skryptowania powłoki w Windows / Ubuntu. Nazywa się to po prostu skryptowaniem powłoki.

Dlaczego Powłoka systemu Windows i Ubuntu zrozumieć tych samych komend, takich jak: ls, mkdir, rmdir, mounti tak dalej?

Czy jest jakiś rodzaj lingua franca do skryptowania powłoki? Jeśli tak, proszę podać mi więcej szczegółów.

Shady Programmer
źródło
9
Zobacz en.wikipedia.org/wiki/List_of_Unix_commands - poszukaj, kiedy te polecenia pojawiły się po raz pierwszy, i sprawdź, kiedy po raz pierwszy pojawiły się Windows i GNU. Te polecenia nie są częścią bash - są zewnętrznymi narzędziami, więc to, która powłoka jest używana, nie ma znaczenia.
muru
10
I jestem pewien, że lsjest obsługiwany przez Powershell, nie cmd.exe. A to dlatego, że twórcy Powershell starali się dodać aliasy dla popularnych poleceń Uniksa, aby użytkownicy Unix byli bardziej komfortowi. technet.microsoft.com/en-us/library/dd347739.aspx
mur
7
Artykuł w Wikipedii na temat DOS może rzucić nieco światła na to. Cytat: „Zamiast tego DOS działał na 16-bitowych procesorach Intel 8086. Począwszy od MS-DOS 1.28 i PC DOS 2.0, system operacyjny zawierał różne funkcje inspirowane Xenix, wariantem Uniksa Microsoftu.” Tak więc Unix jest do pewnego stopnia przodkiem MS-DOS. en.wikipedia.org/wiki/DOS
theodorn
4
@muru: W rzeczywistości zarówno polecenia Unix , jak i DOS są w rzeczywistości aliasami do prawdziwych poleceń PowerShell, które są nazywane zgodnie ze znormalizowaną Action-Objectstrukturą, złożoną z zestawu znormalizowanych akcji i obiektów. Na przykład oba są lsi dirsą aliasami Get-ChildItem(które dodatkowo mają alias gci), mkdiri mdsą w rzeczywistości New-Item(które mogą tworzyć znacznie więcej niż tylko katalogi, dzięki podejściu obiektowemu PowerShell) i tak dalej.
Jörg W Mittag,
2
Zobacz także CPM, VMS, JCL.
Zan Lynx,

Odpowiedzi:

44

Windows cmd.exenie obsługuje ls, mountitp, chyba że zainstalowano te siebie i dodaje je do %PATH%(za pośrednictwem Cygwin, MinGW, Podsystem aplikacji systemu UNIX (SUA) lub coś innego). Powershell ma. A to dlatego, że Powershell ma je jako aliasy standardowych poleceń Powershell, dzięki czemu użytkownicy Uniksa mogą być bardziej komfortowi. Zobacz listę aliasów zgodności w programie Powershell . Okna ma rmdir, mkdiritp , ale te, oczywiście, nie obsługują funkcji takiej samej składni, którą można znaleźć na Ubuntu.

W Ubuntu nie mają one nic wspólnego z Bash. Wszystkie są poleceniami zewnętrznymi. Istnieją standardy dla takich narzędzi. Najbardziej zauważalny jest POSIX (patrz lista narzędzi z mandatem POSIX ), a Linux Standard Base (LSB) to kolejna ważna dla systemów Linux (która jest oparta głównie na POSIX, ale ma pewne dodatki ). Te w Ubuntu są w większości dostarczane przez GNU , a narzędzia GNU często mają więcej funkcji niż podstawa wymagana przez POSIX.

POSIX definiuje również język powłoki , o którym wspomniałeś (który zasadniczo różni się od tego w języku cmd.exe). Wywodzi się ze składni powłoki Bourne'a . Bash (teraz już wiesz, do czego ponownie odnosi się Bourne ), również z GNU, dodaje także dodatkowe funkcje, ale może zachowywać się w sposób zgodny z POSIX, gdy jest to wymagane. Język POSIX jest tym, czego można się spodziewać sh. bash, ksh, ash, dash, zshWszystko użycie że język, z akcesoriami. cshjest w swoim własnym (koszmarnym) świecie i tcshulepsza csh.

Aby zrozumieć nieco więcej, zajrzyj do historii systemów uniksowych i podobnych . Unix wcześniejszy niż Windows od ponad dekady, a te narzędzia pojawiły się po raz pierwszy w Uniksie.

Windows był kiedyś zgodny z POSIX, ponieważ rząd Stanów Zjednoczonych wymagał tego dla systemów operacyjnych używanych przez agencje rządowe (wtedy dodali Usługi dla Uniksa (SFU) , z których pochodzi SUA wspomniany w pierwszym akapicie). Ale wymóg ten został zniesiony, a następnie SUA zostało odrzucone.

Związane z:

(Zwróć uwagę na wspólną część tych postów - wszystkie są w systemach Unix i Linux oraz z tagowaną historią - przeglądanie tego tagu może być bardzo pouczające).

muru
źródło
3
AFAIK rmdir(wraz z mkdiri cd / chdir) są command.comwbudowanymi natywnymi wersjami od MS-DOS 2.0 (wcześniej w systemie plików DOS nie było hierarchii)
jlliagre
1
rdteż był skrótem md.
jlliagre
1
To właśnie otrzymałem od przeczytania twojej odpowiedzi i przejrzenia poprzez linki dostarczone przez innych: Te polecenia / narzędzia pojawiły się po raz pierwszy w różnych systemach. Z czasem większość z nich została zintegrowana z Ubuntu, a niektóre z Windows. Windows postanowił jednak zrobić wszystko po swojemu i stworzyć własną wersję tych narzędzi. Z czasem Windows postanowił dodać aliasy do własnych poleceń powłoki, aby użytkownicy Linuksa mogli używać poleceń, które na powierzchni wyglądają tak samo jak w ich systemach, ale pod nimi są tłumaczone na polecenia systemu Windows
Shady Programmer
1
Język POSIX jest tym, czego można się spodziewać sh. bash, ksh, ash, dash, zshWszystko użycie że język, z akcesoriami. cshjest w swoim własnym (koszmarnym) świecie i tcshulepsza csh. Windows kiedyś był zgodny z POSIX, ponieważ rząd Stanów Zjednoczonych wymagał tego dla systemów operacyjnych używanych przez agencje rządowe (stąd pochodzi SUA). Ale wymóg ten został zniesiony, a następnie SUA zostało odrzucone.
muru
1
@ShadyProgrammer kolejny post U&L, który Cię interesuje: unix.stackexchange.com/q/145522/70524
muru
0

Prosty:

Linux to system oparty na modelu UNIX, opracowanym przez Dennisa Ritchie i Kena Thompsona.

Windows / DOS to tani podróbka systemu o nazwie CP / M, który był popularny w latach 70-tych na starych komputerach podłączonych do telewizora, ten system z kolei był tanim podróbką wczesnych systemów UNIX od późnych lat 60. / wczesnych 70. .

delt
źródło
Chociaż twoja odpowiedź zawiera trochę prawdy, jest zbyt uproszczona, aby była użyteczna. (I używaliśmy monitorów lub terminali z CP / M - nie telewizorami;)) Kiedy próbuję wymyślić jakieś niejasne polecenie bash lub sed, czasami myślę o czasach, kiedy system operacyjny prawie nic dla ciebie nie zrobił, ale to było łatwe do zrobienia - i nigdy nie zabrakło mi pamięci na komputerze 64k.
Joe