Perché la parola "shell" è stata usata per descrivere un'interfaccia da riga di comando?


28

Sono curioso del termine "shell". Penso di sapere di cosa si tratta (sebbene la distinzione tra "shell" e "terminale" sia ancora confusa) ma perché è stata scelta la parola "shell" per descrivere questo tipo di programma?

Questo potrebbe sembrare poco importante, ma di solito quando la parola scelta mi confonde, indica una lacuna nella mia comprensione.


Un terminale è un dispositivo o un tubo I / O. Una shell è un programma eseguibile che in modo interattivo riceve in tempo reale l'input dell'utente da un terminale e quindi fa le cose in base ad esso. Gli "involucri" senza disposizioni per l'uso interattivo diretto sono degli interpreti di scripting tecnicamente di qualche tipo.
LawrenceC,

Risposte:


8

Il glossario Multics può fornire un indizio. La shell è così definita:

Il processore dei comandi Multics era chiamato shell. A questo programma viene passata una riga di comando per l'esecuzione dall'ascoltatore; analizza la riga in un nome di comando e argomenti, individua il comando e lo avvia e chiama il programma di comando con argomenti che sono stringhe di caratteri PL / I. È semplice sostituire la shell fornita dal sistema predefinito con un programma fornito dall'utente, chiamando cu_ $ set_cp (vedere abbrev). Una shell Unix include i concetti di shell e listener in senso Multics.

La relazione tra shell e ascoltatore ha senso sia etimologicamente che metaforicamente [1].

[1] "Poiché la conchiglia è un simbolo di autorità, parola e udito, vale a dire un simbolo di profezia ..."



10

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

"Il nome" shell "per un interprete della riga di comando e il concetto di rendere la shell un programma utente al di fuori del kernel del sistema operativo sono stati introdotti nel precursore Multics di Unix."

Più in basso nella tana del coniglio di Wikipedia si trova questo: "Louis Pouzin, ha introdotto il termine shell per il linguaggio di comando utilizzato in Multics"

Non l'ho letto per intero, ma i suoi scritti qui potrebbero darti la risposta: http://www.multicians.org/shell.html

EDIT: in effetti non è spiegato. Ha semplicemente "coniato" il termine. Non è la storia divertente che speravi, vero?


3
Insoddisfacente, ma a volte va così.
Eric Wilson,

10

Forse perché è la superficie, che protegge il kernel interno dall'utente? Quindi il kernel sarebbe la perla all'interno del guscio.


Ho sempre sentito che la shell era uno strato protettivo che proteggeva l'utente dal kernel.
Glorytoad,

1

Sembra che la risposta sia qui:

Nota storica: Apparentemente, la shell Multics originale (senso 1) era così chiamata perché era una shell (senso 3); eseguiva i programmi utente non avviando processi separati, ma collegando dinamicamente i programmi nel proprio codice, chiamandoli come subroutine e quindi ricollegandoli dinamicamente al ritorno. L'interprete dei comandi VMS fa ancora qualcosa di molto simile a questo.

- Wikipedia

Cioè, "shell" era una buona analogia nel mondo reale per come Multics, un predecessore di Unix, gestiva i programmi.


Wikipedia non è una fonte però. Usandolo come uno, porta a un approvvigionamento circolare, in cui Wikipedia utilizza un sito come fonte, che a sua volta utilizzava Wikipedia come fonte. Allo stato attuale, questa è pura speculazione.
Evi1M4chine,

0

A quanto ho capito, "shell" è un termine più vecchio per quello che ora chiameremmo "interfaccia utente primaria". Il moderno termine analogo sarebbe "Desktop Environment", poiché virtuale tutti i sistemi moderni usano la metafora del desktop.


1
C'è molta sovrapposizione, ma non è esattamente corretto. Ogni shell è un'interfaccia utente. Ma non tutte le interfacce utente sono una shell. Una shell è l'interfaccia utente principale, attorno a tutto e da cui tutto inizia. È l'interfaccia utente principale del sistema operativo.
Evi1M4chine,

-2

Il kernel è il nucleo del sistema, mentre la shell lo circonda ed è l'interfaccia tra il kernel e l'utente.

All'interno di qualsiasi sistema UNIX, e anche con i sistemi Linux, la shell è il luogo in cui gli amministratori di sistema lavorano per configurare e gestire un sistema.

La terminologia moderna usa spesso il termine CLI o l'interfaccia della riga di comando per descrivere il prompt della shell. Ciò dipende dalla GUI o dall'interfaccia grafica utente. Tuttavia, qualsiasi vero Sysadmin sa che non dovresti usare gli strumenti della GUI per configurare UNIX / Linux e lavorare solo direttamente al prompt dei comandi della shell.

Questo è ancora più rilevante al giorno d'oggi quando sentiamo alcuni giovani appassionati di Linux dire cose come "Uso Linux, ma non ho davvero imparato la CLI".

Come dice il vecchio adagio "Se non puoi farlo al prompt della shell, non puoi farlo."


Ho avuto un voto negativo per aver detto la verità. ah bene ...
Colinux
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.