Do tej pory nigdy tego nie myślałem (i nigdy nie obserwowałem) cmd
i command
są dwie różne rzeczy. Dobrze, czy oni są?
Spójrz na to zdjęcie:
Właściwie to zwykle się otwieram cmd
z okna dialogowego Uruchom, gdy chcę podać wiersz poleceń (dla Git / VIM). Dlatego dostosowałem pozycję wyświetlania, czcionkę, kolor itd. Dzisiaj, dla zmiany, wpisałem command
w Run zamiast cmd
i odkryłem, że w moim oknie jest coś nowego. W oknie ma „DOS”.
Więc, oczywiście, powinna istnieć różnica między cmd
i command
. chciałbym wiedzieć
- Różnica między nimi.
- Dlaczego Microsoft je oddzielił (Unix i Linux ma domyślnie tylko jedną powłokę, Bash).
windows
command-line
shell
ms-dos
Surya
źródło
źródło
command.com
to starsza wersja 16-bitowa (dostępna tylko w instalacjach 32-bitowych). Nie istnieje w mojej 64-bitowej wersji systemu Windows 7.Odpowiedzi:
TL; DR
Po uruchomieniu 32-bitowego programu konsoli jest on wykonywany przez
cmd
; kiedy uruchamiasz 16-bitowy program konsoli, jest on wykonywany przezcommand
.Detale
System Windows XP zawiera podsystem obsługujący starsze aplikacje 16-bitowe.
Stare aplikacje 16-bitowe są dostępne jako programy DOS i Windows. Programy DOS ze swej natury są aplikacjami konsoli i działają w wierszu polecenia. Jednak 32-bitowe aplikacje konsoli Windows są bardzo podobne i wyglądają tak samo.
Procesor poleceń / interpreter
cmd
ma kilka celów:dir
,copy
itp.).bat
pliki i kompatybilne z NT.cmd
pliki)Po uruchomieniu starego 16-bitowego programu konsoli jest on wykonywany przez NTVDM (Windows NT Virtual DOS Machine). Zapewnia emulowany system DOS (stąd wirtualna maszyna DOS ) który jest podobny do uruchamiania dedykowanego oprogramowania maszyny wirtualnej, z wyjątkiem tego, że warstwa emulacji jest prostsza.
command
jest 16-bitową wersją interpretera poleceń, która jest znacznie bliższa rzeczywistemu DOS niżcmd.exe
który jest w rzeczywistości programem Windows (w przeciwieństwie do nagłówka Windows PE)command.com
który ma nagłówek DOS MZ).command
ma te same cele cocmd
poza tym, że obsługuje tylko programy 16-bitowe. Ponadto nie obsługuje.cmd
pliki i ma mniej wbudowanych poleceń i ma bardziej ograniczoną składnię (cmd
jest nowszym, bardziej nowoczesnym, bardziej zaawansowanym interpretatorem wiersza polecenia, podobnym do 4DOS ).Obsługuje jednak graficzne programy DOS (takie jak stare gry), ale sukces ich uruchomienia zależy od sterowników karty graficznej i charakteru programu. Istnieje wiele witryn, które oferują różne sztuczki aby uruchomić gry DOS w systemie Windows (chociaż sukces w systemie Vista i wyższym jest zazwyczaj bardziej ograniczony niż w przypadku XP).
Należy zauważyć, że 64-bitowe wersje systemu Windows całkowicie usunęły obsługę programów 16-bitowych, więc nie zawierają
command
w ogóle nie będzie działać ani 16-bitowy program DOS, ani Windows, a zamiast tego rzuci (wprowadzające w błąd) Komunikat o błędzie .Uwagi techniczne
command.com
ma.com
rozszerzenie dla wstecznej kompatybilności z programami DOS, ale podobnie jak większość innych wersji zewnętrznych poleceń DOS dla systemu Windows, wewnętrznie jest to właściwie Windows PE.exe
plik. Daje to interesującą obserwację, że podczas gdy system Windows używa rozszerzenia jako wskaźnika obsługi większości typów plików, w przypadku plików wykonywalnych ignoruje rozszerzenie i sprawdza jego zawartość (w przeciwnym razie.exe
nie działa, jeśli jest traktowany jako.com
). To pytanie odnosi się do tego efektu.źródło
Why would you say this? Are non-command line non-TUI DOS apps 'unnatural' in some way?
Raczej. W 9x były one w porządku, ale aplikacje graficzne (np. Gry) nie działają już poprawnie, jeśli w ogóle w XP +, więc ogromna większość aplikacji DOS, które są uruchamiane w systemie Windows (natywnie), obecnie jest narzędziami wiersza poleceń zamiast pełnoprawny, aplikacje graficzne. Na komputerach 64-bitowych aplikacje 16-bitowe wcale nie działają natywnie, ale nawet aplikacje 32-bitowe są zwykle aplikacjami konsolowymi, zwłaszcza że Vista usunęła obsługę dla konsole pełnoekranowe .również...
To z ten informacyjny Artykuł w Wikipedii.
Jest wzmianka o tym, jak starsze polecenia command.com zostały przekształcone w nowszą funkcjonalność cmd.exe ... na przykład ...
Więc nie krępuj się czytać.
źródło
command.com
to powłoka DOS, zapewniająca kompatybilność.cmd.exe
to natywny program Win32, odziedziczony z OS / 2.źródło