Jaka jest różnica między CMD a wierszem poleceń w oknach?

29

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:

enter image description here

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ć

  1. Różnica między nimi.
  2. Dlaczego Microsoft je oddzielił (Unix i Linux ma domyślnie tylko jedną powłokę, Bash).
Surya
źródło
11
Zakładam command.com to starsza wersja 16-bitowa (dostępna tylko w instalacjach 32-bitowych). Nie istnieje w mojej 64-bitowej wersji systemu Windows 7.
Der Hochstapler
11
UNIX i Linux mają więcej niż jedna powłoka dostępny. Domyślną powłoką jest zazwyczaj Bash.
ephsmith
@ephsmith to, co powiedziałem ..
Surya
Zwróć uwagę, że wyrażenie „wiersz polecenia” może być technicznie użyte do odwoływania się do polecenia.exe lub cmd.exe, ale w praktyce prawie zawsze oznacza cmd.exe.
Harry Johnston
Unix ma w sumie cztery powłoki: csh, ksh, bash, zsh.
Deb

Odpowiedzi:

31

TL; DR

Po uruchomieniu 32-bitowego programu konsoli jest on wykonywany przez cmd; kiedy uruchamiasz 16-bitowy program konsoli, jest on wykonywany przez command.

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:

  • Aby uruchomić 32-bitowy tekst programu konsoli Windows
  • Aby zapewnić i obsługiwać różne funkcje wiersza poleceń ( dir, copyitp.)
  • Interpretuj i wykonuj pliki wsadowe (zgodne z DOS .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 co cmd 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.

Synetech
źródło
Chociaż możesz oczywiście uruchomić 32-bitowy program konsoli z cmd.exe, nie musisz. Jeśli klikniesz dwukrotnie plik wykonywalny w trybie konsoli, nie zostanie uruchomiony „wewnątrz” cmd.exe. Podobnie polecenie.exe nie jest tak samo jak NTVDM.
Harry Johnston
1
Nienawidzę zaczynać zdania z nazwą polecenia.
Synetech
& gt; command.exe tak naprawdę nie jest tym samym co NTVDM Nie, ale to jest część wraz z kilkoma bibliotekami DLL (nauczyłem się tego na własnej skórze, próbując uzyskać 16-bitowe aplikacje konsolowe do pracy z systemem XP).
Synetech
„Programy DOS z natury są aplikacje konsolowe „- Dlaczego powinieneś to powiedzieć?
Karan
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 .
Synetech
8

W przeciwieństwie do COMMAND.COM, który jest programem DOS, cmd.exe to natywna aplikacja Windows zwykle działająca w konsoli Win32. Dzięki temu może korzystać z funkcji dostępnych dla natywnych programów na platformie, które w przeciwnym razie są niedostępne dla programów DOS.

również...

Zarówno wersja cmd.exe systemu OS / 2, jak i Windows NT mają bardziej szczegółowe komunikaty o błędach niż koc „Zła komenda lub nazwa pliku” (w przypadku nieprawidłowo sformułowanych komend) komendy.com.

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 ...

funkcjonalność deltree (command.com) została wprowadzona do rd (cmd.exe) w postaci parametru / s

Więc nie krępuj się czytać.

Bon Gart
źródło
5

command.com to powłoka DOS, zapewniająca kompatybilność.

cmd.exe to natywny program Win32, odziedziczony z OS / 2.

kinokijuf
źródło