Por que a palavra "shell" foi usada para descrever uma interface de linha de comando?

28

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

Isso pode parecer sem importância, mas geralmente quando a palavra escolha me intriga, está apontando para uma lacuna no meu entendimento.

Eric Wilson
fonte
Um terminal é um dispositivo ou tubo de E / S. Um shell é um programa executável que interativamente recebe em tempo real a entrada do usuário de um terminal e, em seguida, faz as coisas com base nele. "Conchas" sem provisão para uso interativo direto são tecnicamente intérpretes de script de algum tipo.
LawrenceC

Respostas:

8

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

O processador de comando Multics costumava ser chamado de shell. Este programa recebe uma linha de comando para execução pelo ouvinte; ele analisa a linha em um nome de comando e argumentos, localiza o comando e o inicia e chama o programa de comando com argumentos que são cadeias de caracteres PL / I. É simples substituir o shell padrão do sistema fornecido por um programa fornecido pelo usuário, chamando cu_ $ set_cp (veja a abreviação). Um shell Unix inclui os conceitos de shell e ouvinte no sentido Multics.

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

[1] "Visto que a concha é um símbolo de autoridade, fala e audição, ou seja, um símbolo de profecia ..."

jasonwryan
fonte
19

A analogia é com uma porca : fora é a concha, dentro é o núcleo.

donutingsuccessfully
fonte
10

De http://en.wikipedia.org/wiki/Thompson_shell#History

"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 precursor do Unix, Multics".

Mais abaixo, na wikipedia, a toca do coelho encontra o seguinte: "Louis Pouzin, introduziu o termo shell para a linguagem de comando usada no Multics"

Eu não li na íntegra, mas os escritos aqui podem dar a resposta: http://www.multicians.org/shell.html

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

draeath
fonte
3
Insatisfatório, mas é assim que acontece às vezes.
Eric Wilson
10

Talvez porque seja a superfície, protegendo o núcleo interno do usuário? Portanto, o núcleo seria a pérola dentro da casca.

Usuário desconhecido
fonte
Eu sempre ouvi dizer que o shell era uma camada protetora que protegia o usuário do kernel.
perfil completo de Glorytoad
1

Looks like the answer lies here:

Nota histórica: Aparentemente, o shell Multics original (sentido 1) foi assim chamado porque era um shell (sentido 3); executava programas do usuário não iniciando processos separados, mas vinculando os programas dinamicamente em seu próprio código, chamando-os de sub-rotinas e, em seguida, desassociando-os dinamicamente no retorno. O intérprete de comando do VMS ainda faz algo muito parecido com isto.

- Wikipedia

Ou seja, "shell" era uma boa analogia do mundo real de como Multics, um antecessor do Unix, executava programas.

Alex W
fonte
A Wikipedia não é uma fonte. Usá-lo como um, leva ao fornecimento circular, onde a Wikipedia usa um site como fonte, que por sua vez usa a Wikipedia como fonte. Tal como está, isso é pura especulação.
Evi1M4chine
0

Pelo que entendi, "shell" é um termo mais antigo para o que agora chamaríamos de "Interface do Usuário Principal". O termo análogo moderno seria "ambiente de desktop", uma vez que todos os sistemas modernos usam a metáfora do desktop.

Teddy
fonte
11
Há muita sobreposição, mas isso não é exatamente correto. Todo shell é uma interface de usuário. Mas nem toda interface de usuário é um shell. Um shell é a principal interface do usuário, em torno de tudo e a partir do qual tudo começa. É a principal interface do usuário do sistema operacional.
Evi1M4chine
-2

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

Em qualquer sistema UNIX, e mesmo nos sistemas Linux, o shell é o local em que os administradores de sistemas trabalham para configurar e gerenciar um sistema.

A terminologia moderna geralmente usa o termo CLI ou interface da linha de comandos para descrever o prompt do shell. Isso é deferência à GUI ou interface gráfica do usuário. No entanto, qualquer Sysadmin real sabe que você não deve usar ferramentas da 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 do Linux dizendo coisas como "Eu uso o Linux, mas eu realmente não aprendi a CLI".

Como diz o velho ditado "Se você não pode fazê-lo no prompt do shell, não pode fazê-lo".

Colinux
fonte
Eu recebi uma votação por dizer a verdade. ah bem ...
Colinux 30/05