¿Cuál es la diferencia entre CMD y símbolo del sistema en Windows?

30

Hasta ahora, nunca pensé (y nunca observé) eso cmdy commandson dos cosas diferentes. Bueno, son ellos?

Echa un vistazo a esta foto:

ingrese la descripción de la imagen aquí

En realidad, generalmente abro cmddesde el cuadro de diálogo Ejecutar cuando quiero en la línea de comandos (para Git / VIM). Entonces, personalicé la posición de visualización, la fuente, el color, etc. Hoy, para variar, escribí commandEjecutar en lugar de cmdy encontré que hay algo nuevo en mi ventana. Tiene "DOS" en su ventana.

Entonces, obviamente debería haber una diferencia entre cmdy command. Me gustaría saber

  1. La diferencia entre ellos.
  2. Por qué Microsoft los separó (Unix y Linux solo tiene un shell por defecto, Bash).
Surya
fuente
11
Supongo que command.comes la versión heredada de 16 bits (solo disponible en instalaciones de 32 bits). No existe en mi versión de 64 bits de Windows 7.
Der Hochstapler
11
UNIX y Linux tienen más de un shell disponible. El shell predeterminado es típicamente Bash.
ephsmith
@ephsmith eso es lo que dije ..
Surya
Tenga en cuenta que la frase "símbolo del sistema" técnicamente podría usarse para referirse a command.exe o cmd.exe, pero en la práctica casi siempre se usa para referirse a cmd.exe.
Harry Johnston
Unix tiene un total de cuatro shell, estos son csh, ksh, bash, zsh.
Deb

Respuestas:

31

TL; DR

Cuando ejecuta un programa de consola de 32 bits, lo ejecuta cmd; cuando ejecuta un programa de consola de 16 bits, lo ejecuta command.

Detalles

Windows XP incluye un subsistema para admitir aplicaciones antiguas de 16 bits.

Las aplicaciones antiguas de 16 bits están disponibles como programas DOS y Windows. Los programas de DOS por su naturaleza son aplicaciones de consola y se ejecutan en lo que parece el símbolo del sistema. Sin embargo, las aplicaciones de consola de Windows de 32 bits son muy similares y tienen el mismo aspecto.

El procesador / intérprete de comandos cmdtiene varios propósitos:

  • Para ejecutar el programa de consola de Windows de texto de 32 bits
  • Para proporcionar y manejar diversas funciones de línea de comandos ( dir, copy, etc.)
  • Interpretar y ejecutar archivos por lotes ( .batarchivos compatibles con DOS y .cmdarchivos compatibles con NT )

Cuando ejecuta un antiguo programa de consola de 16 bits, lo ejecuta NTVDM (máquina virtual de Windows NT de DOS). Proporciona un sistema DOS emulado (de ahí la máquina virtual DOS ) que es similar a ejecutar un software de máquina virtual dedicado, excepto que la capa de emulación es más simple. commandes una versión de 16 bits del intérprete de comandos que está mucho más cerca del DOS real que el cmd.exeque es en realidad un programa de Windows (y tiene el encabezado de Windows PE, a diferencia del command.comque tiene el encabezado de DOS MZ).

commandtiene los mismos propósitos, cmdexcepto que solo admite programas de 16 bits. Además, no admite .cmdarchivos y tiene menos comandos integrados y su sintaxis es más limitada ( cmdes un intérprete de línea de comandos más nuevo, más moderno y más avanzado, similar a 4DOS ).

Sin embargo, es compatible con programas gráficos de DOS (como juegos antiguos), pero el éxito de su ejecución depende de los controladores de la tarjeta de video y de la naturaleza del programa. Existen numerosos sitios que ofrecen varios trucos para que los juegos de DOS se ejecuten en Windows (aunque el éxito en Vista y versiones posteriores suele ser más limitado que en XP).

Cabe señalar que las versiones de Windows de 64 bits han dejado de admitir completamente los programas de 16 bits, por lo que no se incluyen commanden absoluto, por lo que ni los programas de DOS ni Windows de 16 bits se ejecutarán y en su lugar arrojarán un mensaje de error (engañoso) .


Notas técnicas

command.comtiene una .comextensión para la compatibilidad con los programas de DOS, pero como la mayoría de las otras versiones de Windows de comandos externos de DOS, internamente, en realidad es un .exearchivo de Windows PE . Esto proporciona la observación interesante de que si bien Windows usa la extensión como un indicador de cómo manejar la mayoría de los tipos de archivos, para los ejecutables, ignora la extensión y mira su contenido (de lo contrario .exe, no funcionaría si se tratara como a .com). Esta pregunta se relaciona con este efecto.

Synetech
fuente
Si bien, por supuesto, puede ejecutar un programa de consola de 32 bits desde cmd.exe, no tiene que hacerlo. Si hace doble clic en un archivo ejecutable en modo de consola, no se ejecuta "dentro" cmd.exe. Del mismo modo, command.exe no es realmente lo mismo que el NTVDM.
Harry Johnston
1
Odio comenzar una oración con un nombre de comando.
Synetech
> command.exe no es realmente lo mismo que el NTVDM No, pero es parte de él, junto con varias DLL (aprendí esto de la manera difícil mientras intentaba que las aplicaciones de consola de 16 bits funcionaran en un sistema XP )
Synetech
"Los programas DOS por su naturaleza son aplicaciones de consola " - ¿Por qué dirías esto? ¿Las aplicaciones DOS sin línea de comandos que no son TUI son 'antinaturales' de alguna manera? :)
Karan
Why would you say this? Are non-command line non-TUI DOS apps 'unnatural' in some way? Más o menos. En 9x, estaban bien, pero las aplicaciones gráficas (p. Ej., Juegos) ya no funcionan correctamente en absoluto en XP +, por lo que la gran mayoría de las aplicaciones de DOS que se ejecutan en Windows (de forma nativa) actualmente son herramientas de línea de comandos en lugar de Aplicaciones gráficas completas. En las máquinas de 64 bits, las aplicaciones de 16 bits no se ejecutan de forma nativa en absoluto, pero incluso aplicaciones de 32 bits están generalmente consola aplicaciones, especialmente desde Vista abandonado el soporte para pantalla completa consolas .
Synetech
8

A diferencia de COMMAND.COM, que es un programa de DOS, cmd.exe es una aplicación nativa de Windows que generalmente se ejecuta en la consola Win32. Esto le permite aprovechar las funciones disponibles para los programas nativos en la plataforma que de otro modo no estarían disponibles para los programas de DOS.

además...

Tanto las versiones OS / 2 como Windows NT de cmd.exe tienen mensajes de error más detallados que el "Comando incorrecto o nombre de archivo" (en el caso de comandos mal formados) de command.com.

Eso es de este artículo informativo de Wikipedia.

Se menciona cómo los comandos command.com más antiguos se han incorporado a la funcionalidad cmd.exe más nueva ... por ejemplo ...

la funcionalidad de deltree (command.com) se incluyó en rd (cmd.exe) en forma del parámetro / s

Entonces, siéntase libre de leer.

Bon Gart
fuente
5

command.com es el shell de DOS, proporcionado por compatibilidad.

cmd.exe es un programa nativo de Win32, heredado de OS / 2.

Kinokijuf
fuente