Existe alguma maneira de saber quais dos comandos são internos e quais são externos?

3

Eu estava ensinando interface de linha de comando para minha irmã e ensinei o que são Internal & comandos externos (também conhecidos como Comandos residentes e temporários ). Sua pergunta para mim foi qual desses comandos em Windows XP e quais os Windows Vista, Comandos do Windows 7 são internos & quais são externas?

Bem, existe alguma maneira de saber isso?

    
por claws 14.12.2011 / 19:10

2 respostas

3

Você está fazendo sua irmã um dis-service.

A distinção entre comandos "residentes" e "transitórios" vem de uma arquitetura de gerenciamento de memória não virtualizada que estava no MS-DOS e no CP / M. Em sistemas operacionais de memória virtual com paginação por demanda, como o Windows NT 6.1, não tem sentido. O sistema não mantém as coisas embutidas no residente do processador de comandos e os programas invocados pelo processador de comandos não são necessariamente transitórios. A memória simplesmente não é gerenciada da mesma maneira.

Você também está fazendo sua irmã um dis-service referenciando uma lista de "comandos DOS". Seu sistema operacional não é DOS e nunca foi o DOS em toda a sua história. O que é verdade sobre a família DOS de sistemas operacionais não é necessariamente o caso do seu sistema operacional e seu interpretador de comandos.

A terminologia que você está procurando é "comandos embutidos", cujo código de programa é embutido no executável do interpretador de comandos e é executado no próprio processo do interpretador de comandos, versus "comandos externos", cujo código de programa está separado imagem do programa executável e é executada em um processo separado.

Com alguns intérpretes de comandos, isso é fácil; mas tem que ser o interpretador de comandos que faz isso.

O intérprete de comandos de substituição da JP Software TCC possui um comando - o ? comando - que exibe todos os comandos incorporados atualmente ativados. Obter a lista de comandos internos é tão simples quanto executar:

?

Meu intérprete de comando tem a mesma coisa. O mesmo acontece com o cmd do ReactOS. (Em todos os nossos intérpretes de comando, é o mesmo comando - ? - na verdade.) Todos os outros interpretadores de comandos em que isso é possível terão isso ou um comando com função semelhante. ( Os shells para sistemas POSIX possuem, de forma variada, comandos internos chamados type , whence ou which Obtendo a lista de comandos embutidos tem para ser feito através de um comando embutido no interpretador de comandos, porque apenas algo com acesso às entranhas do código do interpretador de comandos sabe onde encontre a lista de comandos incorporados que o programa do interpretador de comandos contém e mantém.

É possível que um comando externo seja escrito com a lista própria de comandos internos. Eu escrevi um desses eu mesmo, cerca de duas décadas atrás. Ele sabia tudo sobre os comandos incorporados a command , cmd , 4dos e 4os2 , porque construí minha própria tabela de quem tinha o comando interno e o colocava no programa. Mas não tinha como saber se algum comando interno havia sido desabilitado com setdos /i , e estava consistentemente à mercê dos autores desses intérpretes de comandos adicionando novos comandos internos aos seus programas ou simplesmente não documentando alguns comandos. . E não tinha como saber qual interpretador de comandos (se algum) era invocado, portanto, não poderia saber quando (por exemplo) help era um comando interno (como é para alguns dos interpretadores de comandos) e quando era um comando externo (como é para os outros).

O único método confiável é um comando incorporado ao interpretador de comandos que você deseja verificar. Comandos externos de outras pessoas, como where , which , help e várias pessoas assim por diante todos sofrerão dos mesmos problemas que meu programa fez.

Infelizmente, a Microsoft nunca achou por bem fornecer tal funcionalidade em seu cmd .

    
por 02.01.2012 / 16:02
4

No melhor de meu conhecimento, não há uma lista completa de comandos que estão incorporados no interpretador de comandos ... (pelo menos, não que eu tenha encontrado) Mas um rápido & maneira suja de dizer seria abrir um prompt de comando .. e acabar com a variável PATH. Quaisquer comandos que ainda funcionem são embutidos no shell (ou no diretório de trabalho, se houver algum) ... os que não funcionam mais ... são programas localizados em algum lugar da máquina.

    
por 14.12.2011 / 19:16