cosa intendi con shell interattiva?


25

UNIX: The Complete Reference, Seconda edizione di Kenneth H. Rosen et al.

È possibile avviare un'altra shell dopo aver effettuato l'accesso utilizzando il nome della shell come comando; per esempio, per avviare la shell Korn, puoi digitare ksh al prompt dei comandi. Questo tipo di shell non è una shell di accesso e non è necessario accedere nuovamente per usarla, ma è comunque una shell interattiva, il che significa che si interagisce con la shell digitando i comandi (invece di utilizzare la shell per eseguire uno script, come discusso nel capitolo 20). Le istanze della shell eseguite in una finestra di terminale quando si utilizza un'interfaccia grafica sono anche shell interattive non di accesso. Quando si avvia una shell non di accesso, non legge il file .profile, .bash_profile o .login (o il file .logout), ma continuerà a leggere il secondo file di configurazione della shell (come .bashrc). Ciò significa che puoi testare le modifiche al tuo.

Stavo attraversando le righe sopra e non capisco cosa significa shell interattiva. È vero che .profile non viene letto se sto usando il terminale?

Inoltre, cosa vuol dire che bourne non è una shell interattiva mentre bash / csh è una shell interattiva?

Risposte:


27

Una shell interattiva è semplicemente qualsiasi processo di shell che si utilizza per digitare i comandi e ottenere l'output da tali comandi. Cioè, una shell con cui interagisci.

Pertanto, la shell di accesso è interattiva, così come qualsiasi altra shell avviata manualmente, come descritto nell'estratto citato nella domanda. Al contrario, quando si esegue uno script di shell, viene avviata una shell non interattiva che esegue i comandi nello script e quindi termina al termine dello script.

La shell Bourne può essere utilizzata come shell interattiva, proprio come basho tcsh. In effetti, molti sistemi, come FreeBSD, usano shcome shell utente predefinita. Conchiglie moderni come bash, zsh, tcsh, ecc hanno molte caratteristiche che Bourne shell non hanno, che li rendono più comodo e conveniente per l'uso interattivo (cronologia dei comandi, il completamento, ecc).

Shell interattive non d'accesso (vale a dire, conchiglie si avvia manualmente da un altro shell o con l'apertura di una finestra di terminale) non leggono i vostri .logino di .profilefile. Questi vengono letti ed eseguiti solo dalle shell di accesso (shell avviate dal loginprocesso di sistema o dal tuo X display manager), quindi i comandi e le impostazioni in essi contenuti vengono applicati solo una volta, all'inizio della sessione di accesso. Quindi, quando avvii un terminale, la shell che genera per te non legge i tuoi file di login ( .loginper shell in stile c, .profileper shell in stile bourne), ma legge i file .cshrc, .bashrcecc.


È possibile eseguire una shell come shell di login non interattiva.
jw013,

Vero, ma potenzialmente confuso!
D_Bye,

ksh è anche una shell moderna :-) Vedi www2.research.att.com/sw/download e usa il menu sul margine sinistro per navigare alla panoramica AST-> ksh->. Una nuova versione esce più volte all'anno da David Korn e Glen Fowler. Buona fortuna a tutti.
Shellter,

1
@shellter - sì, davvero. Ma non è uno che abbia mai usato, e ho dovuto smettere di enumerare le shell da qualche parte! ;-)
D_Bye,

Hai detto che The Bourne shell can be used as an interactive shell, just like bash or tcsh. Bourne shell non è la stessa di bash?
Mr.Web,
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.