qu'entendez-vous par shell interactif?

25

UNIX: The Complete Reference, deuxième édition par Kenneth H. Rosen et al.

Vous pouvez démarrer un autre shell après vous être connecté en utilisant le nom du shell comme commande; par exemple, pour démarrer le shell Korn, vous pouvez taper ksh à l'invite de commande. Ce type de shell n'est pas un shell de connexion et vous n'avez pas besoin de vous reconnecter pour l'utiliser, mais c'est toujours un shell interactif, ce qui signifie que vous interagissez avec le shell en tapant des commandes (par opposition à utiliser le shell pour exécutez un script, comme expliqué au chapitre 20). Les instances du shell qui s'exécutent dans une fenêtre de terminal lorsque vous utilisez une interface graphique sont également des shells interactifs sans connexion. Lorsque vous démarrez un shell sans connexion, il ne lit pas votre fichier .profile, .bash_profile ou .login (ou votre fichier .logout), mais il lit toujours le deuxième fichier de configuration du shell (tel que .bashrc). Cela signifie que vous pouvez tester les modifications apportées à votre.

Je parcourais les lignes ci-dessus et je ne comprends pas ce que cela signifie par shell interactif. Est-il vrai que .profile n'est pas lu si j'utilise un terminal?

De plus, qu'est-ce que cela signifie lorsque vous dites que bourne n'est pas un shell interactif alors que bash / csh est un shell interactif?

munish
la source

Réponses:

27

Un shell interactif est tout simplement un processus shell que vous utilisez pour taper des commandes et récupérer la sortie de ces commandes. Autrement dit, un shell avec lequel vous interagissez.

Ainsi, votre shell de connexion est interactif, comme tous les autres shells que vous démarrez manuellement, comme décrit dans l'extrait que vous avez cité dans votre question. En revanche, lorsque vous exécutez un script shell, un shell non interactif est démarré qui exécute les commandes du script, puis se ferme lorsque le script se termine.

Le shell Bourne peut être utilisé comme un shell interactif, tout comme bashou tcsh. En fait, de nombreux systèmes, tels que FreeBSD, utilisent shcomme shell utilisateur par défaut. Coquilles modernes comme bash, zsh, tcsh, etc ont de nombreuses caractéristiques que Bourne shell ne possède pas, qui les rendent plus confortable et pratique pour une utilisation interactive (historique des commandes, l' achèvement, etc.).

Les shells interactifs sans connexion (c'est-à-dire les shells que vous démarrez manuellement à partir d'un autre shell ou en ouvrant une fenêtre de terminal) ne lisent pas vos fichiers .loginou .profile. Ceux-ci ne sont lus et exécutés que par des shells de connexion (shells démarrés par le loginprocessus système ou par votre gestionnaire d'affichage X), de sorte que les commandes et les paramètres qu'ils contiennent ne sont appliqués qu'une seule fois, au début de votre session de connexion. Ainsi, lorsque vous démarrez un terminal, le shell qu'il génère pour vous ne lit pas vos fichiers de connexion ( .loginpour les shells de style c, .profilepour les shells de style bourne), mais il lit les fichiers .cshrc, .bashrcetc.

D_Bye
la source
Il est possible d'exécuter un shell en tant que shell de connexion non interactif.
jw013
C'est vrai, mais potentiellement déroutant!
D_Bye
ksh est également un shell moderne :-) Voir www2.research.att.com/sw/download et utilisez le menu dans la marge de gauche pour naviguer vers AST-> ksh-> aperçu. Une nouvelle version sort plusieurs fois par an de David Korn et Glen Fowler. Bonne chance à tous.
shellter
1
@shellter - oui, en effet. Mais ce n'est pas celui que j'ai jamais utilisé, et j'ai dû arrêter d'énumérer les coquilles quelque part! ;-)
D_Bye
Vous avez dit que le The Bourne shell can be used as an interactive shell, just like bash or tcsh. Bourne n'est-il pas le même que bash?
Mr.Web le