Até agora, eu nunca pensei (e nunca observei) isso cmd
e command
são duas coisas diferentes. Bem, são eles?
Dê uma olhada nesta foto:
Na verdade, eu geralmente abro a cmd
partir da caixa de diálogo Executar sempre que quero a linha de comando (para Git / VIM). Então, eu personalizei a posição de exibição, fonte, cor, etc. Hoje, eu, para variar, digitei command
Executar em vez de cmd
e descobri que havia algo novo na minha janela. Possui "DOS" em sua janela.
Então, obviamente, deve haver diferença entre cmd
e command
. Eu gostaria de saber
- A diferença entre eles.
- Por que a Microsoft os separou (Unix e Linux tem apenas um shell por padrão, Bash).
windows
command-line
shell
ms-dos
Surya
fonte
fonte
command.com
é a versão herdada de 16 bits (disponível apenas em instalações de 32 bits). Ela não existe na minha versão de 64 bits do Windows 7.Respostas:
TL; DR
Quando você executa um programa de console de 32 bits, ele é executado por
cmd
; Quando você executa um programa de console de 16 bits, ele é executado porcommand
.Detalhes
O Windows XP inclui um subsistema para oferecer suporte a aplicativos mais antigos de 16 bits.
Aplicativos antigos de 16 bits estão disponíveis nos programas DOS e Windows. Os programas DOS, por natureza, são aplicativos de console e executam o que parece ser o prompt de comando. No entanto, os aplicativos de console do Windows de 32 bits são muito semelhantes e têm a mesma aparência.
O processador / intérprete de comando
cmd
tem vários propósitos:dir
,copy
, etc.).bat
arquivos compatíveis com DOS e.cmd
arquivos compatíveis com NT )Quando você executa um programa de console antigo de 16 bits, ele é executado pelo NTVDM (Windows DOS Virtual DOS Machine). Ele fornece um sistema DOS emulado (daí a máquina DOS virtual ) que é semelhante à execução de um software de máquina virtual dedicado, exceto que a camada de emulação é mais simples.
command
é uma versão de 16 bits do interpretador de comandos muito mais próxima do DOS real docmd.exe
que na verdade é um programa do Windows (e possui o cabeçalho do Windows PE, diferentecommand.com
do cabeçalho do DOS MZ).command
tem os mesmos propósitos,cmd
exceto que ele suporta apenas programas de 16 bits. Além disso, ele não suporta.cmd
arquivos e possui menos comandos internos e é mais limitado em sua sintaxe (cmd
é um interpretador de linha de comando mais novo, mais moderno e mais avançado, semelhante ao 4DOS ).No entanto, ele suporta programas gráficos do DOS (como jogos antigos), mas o sucesso de executá-los depende dos drivers da placa de vídeo e da natureza do programa. Existem inúmeros sites que oferecem vários truques para que os jogos do DOS sejam executados no Windows (embora o sucesso no Vista e superior seja geralmente mais limitado que no XP).
Deve-se notar que as versões de 64 bits do Windows abandonaram completamente o suporte a programas de 16 bits e, portanto, não incluem
command
nada; portanto, nem os programas DOS nem os de 16 bits do Windows serão executados e, em vez disso, lançarão uma mensagem de erro (enganosa) .Notas técnicas
command.com
possui uma.com
extensão para compatibilidade retroativa com programas DOS, mas, como a maioria das outras versões do Windows de comandos externos do DOS, internamente, na verdade, é um.exe
arquivo do Windows PE . Isso fornece a observação interessante de que, embora o Windows use a extensão como um indicador de como lidar com a maioria dos tipos de arquivos, nos executáveis, ele ignora a extensão e analisa seu conteúdo (caso contrário.exe
, não funcionaria se tratado como um.com
). Esta questão está relacionada a esse efeito.fonte
Why would you say this? Are non-command line non-TUI DOS apps 'unnatural' in some way?
Tipo de. No 9x, eles estavam bem, mas os aplicativos gráficos (por exemplo, jogos) não funcionam mais corretamente no XP +, então a grande maioria dos aplicativos DOS que são executados no Windows (nativamente) atualmente são de fato ferramentas de linha de comando em vez de aplicativos gráficos completos. Em máquinas de 64 bits, os aplicativos de 16 bits não são executados de forma nativa, mas mesmo os aplicativos de 32 bits são geralmente aplicativos de console, especialmente porque o Vista abandonou o suporte para consoles de tela cheia .Além disso...
Isso é deste artigo informativo da Wikipedia.
Há menção de como os comandos command.com mais antigos foram lançados na funcionalidade mais recente do cmd.exe ... por exemplo ...
Portanto, fique à vontade para ler.
fonte
command.com
é o shell do DOS, fornecido para compatibilidade.cmd.exe
é um programa Win32 nativo, herdado do OS / 2.fonte