Domanda Sono terminali e shell uguali?


So che questo potrebbe sembrare sciocco, ma volevo solo sapere se c'è davvero una differenza tra le due parole usate nel mondo di Linux. So che Shell è un'interfaccia a riga di comando e ha molte varianti come Bash, Korn, ecc. E so anche che un Ctrl + Alt + T lancia un terminale su Ubuntu. Voglio solo collegare questi due punti.

Significa che il terminale è la finestra che si apre e la shell è il programma che viene eseguito dietro per interpretare i comandi digitati nella finestra? O sono gli stessi in cui terminale è un termine generico usato per astrarre i concetti di Shell, ecc.?

Cos'è che differenzia esattamente le due parole?


27
2018-03-08 12:56


origine




risposte:


L'emulatore di terminale (spesso chiamato solo terminale) è "solo la finestra", sì. Esegue un programma basato su testo, che di default è la tua shell di login (che è bash in Ubuntu). Quando digiti i caratteri nella finestra, il terminale disegna questi caratteri nella finestra oltre a inviarlo allo stdin della shell (o di un altro programma). I personaggi che la shell invia allo stdout e allo stderr vengono inviati al terminale, che a sua volta disegna questi caratteri nella finestra.

Quindi sì, la shell e l'emulatore di terminale sono programmi completamente separati e possono essere usati senza l'altro.


29
2018-03-08 13:14



Come si può usare la shell senza terminale? - Koray Tugay
@KayayTugay, quando si esegue uno script di shell da cron o tramite un desktop launcher (dove non è stato selezionato "run in terminal"), si sta utilizzando una shell senza un terminale. - geirha


Penso che questa domanda sia stata esplorata abbastanza bene sul sito di stackexchange di Unix e Linux: Differenze tra shell, console e terminale


8
2018-03-08 14:45



Potresti aggiungere le parti essenziali del link alla tua risposta? - jokerdino♦
Questa non è una risposta, questo è un commento. - Koray Tugay


Sì, l'emulatore di terminale e la shell sono due programmi diversi. Come saprai, un esempio della differenza è che l'avvio di una finestra di terminale può eseguire shell differenti a seconda di ciò che hai configurato (bash, tcsh, ksh, ash, anche python!).

Un'altra differenza è che ci sono più emulatori di terminale che solo l'impostazione predefinita: gnome-terminal, diverse varietà di xterm, konsole (per KDE), ecc. (Vedere: http://www.howtogeek.com/howto/ubuntu/set-the-default-terminal-emulator-on-ubuntu-linux/ ). Qualsiasi shell può essere eseguita in uno di questi emulatori di terminale, senza troppe difficoltà.

Una terza differenza è che, oltre ad eseguire i comandi della shell, è anche possibile avviare alcune applicazioni interattive nel proprio emulatore di terminale, che verranno eseguite nella stessa finestra (e si baseranno ancora sullo stesso programma di emulazione di terminale per gestire la grafica effettiva), ad esempio l'editor di testo vim, il gioco di ruolo nethack e altri. Se lo si desidera, è possibile impostare un profilo nel proprio emulatore di terminale per avviare nethack, ad esempio, automaticamente all'apertura di una nuova scheda; nessuna shell coinvolta, ma l'emulatore di terminale è ancora lo stesso programma.

Una quarta differenza è che è possibile eseguire accessi remoti, utilizzando un programma come ssh, all'interno di una finestra di terminale. In questo caso, la shell (o qualsiasi altro programma eseguito in remoto) è in esecuzione su un altro computer e il programma ssh lo collega al programma di emulazione di terminale locale in esecuzione sulla macchina che gestisce la grafica.


3
2017-12-16 17:52