Por que a palavra “shell” era usada para descrever uma interface de linha de comando?

22

Estou curioso sobre o termo "shell". Eu acho que sei o que é (embora a distinção entre "shell" e "terminal" ainda seja confusa), mas por que a palavra "shell" foi escolhida para descrever este tipo de programa?

Isso pode parecer sem importância, mas geralmente quando as escolhas de palavras me mistificam, isso indica uma lacuna no meu entendimento.

    
por Eric Wilson 13.06.2011 / 20:45

7 respostas

8

O glossário de Multics pode fornecer uma pista. O shell é definido assim:

The Multics command processor used to be called the shell. This program is passed a command line for execution by the listener; it parses the line into a command name and arguments, locates the command and initiates it, and calls the command program with arguments that are PL/I character strings. It is simple to replace the default system supplied shell with a user-provided program, by calling cu_$set_cp (see abbrev). A Unix shell includes the concepts of both shell and listener in the Multics sense.

A relação entre shell e ouvinte faz sentido etimologicamente e metaforicamente [1].

[1] "Já que a concha é um símbolo de autoridade, fala e audição, o que significa um símbolo de profecia ..."

    
por 13.06.2011 / 21:30
14

A analogia é com uma porca : fora é o shell, dentro é o kernel.

    
por 14.06.2011 / 21:32
10

De link

"O nome" shell "para um interpretador de linha de comando e o conceito de tornar o shell um programa de usuário fora do kernel do sistema operacional foram introduzidos no Multics precursor do Unix."

Mais abaixo no buraco do coelho da wikipedia encontra isto: "Louis Pouzin, introduziu o termo shell para a linguagem de comando usada em Multics"

Eu não li na íntegra, mas a escrita dele aqui pode dar a resposta: link

EDIT: na verdade não é explicado. Ele simplesmente "inventou" o termo. Não é a história engraçada que você estava esperando, foi?

    
por 13.06.2011 / 21:06
9

Talvez porque seja a superfície, protegendo o kernel interno do usuário? Então o kernel seria a pérola dentro da casca.

    
por 13.06.2011 / 22:30
1

Parece que a resposta está aqui:

Historical note: Apparently, the original Multics shell (sense 1) was so called because it was a shell (sense 3); it ran user programs not by starting up separate processes, but by dynamically linking the programs into its own code, calling them as subroutines, and then dynamically de-linking them on return. The VMS command interpreter still does something very like this.

- Wikipédia

Ou seja, "shell" era uma boa analogia do mundo real sobre como Multics, um predecessor do Unix, rodava programas.

    
por 07.09.2015 / 21:19
0

Pelo que entendi, "shell" é um termo antigo para o que agora chamaríamos de "Interface do usuário principal". O termo moderno e análogo seria "Desktop Environment", já que virtualmente todos os sistemas modernos usam a metáfora da área de trabalho.

    
por 14.06.2011 / 12:06
-1

O kernel é o núcleo do sistema, enquanto o shell o envolve e é a interface entre o kernel e o usuário.

Dentro de qualquer sistema UNIX, e mesmo com sistemas Linux, o shell é o lugar que os administradores de sistemas trabalham para configurar e gerenciar um sistema.

A terminologia moderna geralmente usa o termo CLI ou interface de linha de comando para descrever o prompt do shell. Isso é em consideração à GUI ou à interface gráfica do usuário. No entanto, qualquer Sysadmin real sabe que você não deve usar ferramentas GUI para configurar um UNIX / Linux e trabalhar apenas diretamente no prompt de comando do shell.

Isso é ainda mais relevante hoje em dia quando ouvimos alguns entusiastas juniores de Linux dizer coisas como "eu uso linux, mas não aprendi realmente o CLI".

Como diz o velho ditado: "Se você não puder fazer isso no prompt do shell, não poderá fazê-lo".

    
por 13.05.2018 / 13:21