Ainsi, les pages man de bash expliquent ce que sont les connexions de connexion et interactives:
Un shell de connexion est celui dont le premier caractère de l'argument zéro est a -, ou on a commencé avec l'option –login.
Un shell interactif est démarré sans arguments sans option et sans l'option -c dont l'entrée et l'erreur standard sont toutes deux connectées aux terminaux (comme déterminé par isatty (3)), ou on a commencé avec l'option -i. PS1 est défini et $ – comprend i si bash est interactif, permettant à un script shell ou à un fichier de démarrage de tester cet état.
Je pense que cela signifie que nous pouvons avoir 4 types différents de coquilles:
Mais pourquoi avons-nous des coquilles interactives / non interactives et de connexion / non-connexion en premier lieu? Pourquoi la variété? Que perdririons-nous si nous n'avions qu'un type de coquille?
En essayant de déterminer si je suis dans un shell de connexion en exécutant echo $-
, il produit:
himBH
Certains de ces drapeaux sont expliqués ici , mais h
, H
et m
ne sont pas expliqués. Y at-il un endroit qui décrit tous ces drapeaux?
Ce sont mes pensées sur les différents "types" de coquillages – malheureusement, je n'ai pas assisté à la montée de l'Un * x dès le début (je suppose que ce concept est largement développé dans l'histoire), alors soyez critique.
/etc/profile
, ~/.bash_login
et ainsi de suite, se référer au manuel pour une liste précise) provenant uniquement des shells de connexion . ~/.bash_logout
lorsque le shell de connexion existe. ~/.bashrc
, car je veux que mes connexions de clés interagissent avec le shell – donc c'est un Coque interactif et sans connexion . bash
devrait commencer aussi vite qu'il le peut, c'est-à-dire ne devrait pas lire de fichiers de configuration. Il s'agit d'un shell non interactif, sans connexion . Donc, ma réponse à votre question Qu'aura-t-on perdre si nous n'avions qu'un type de coquille? Est en un mot: "Flexibilité".
La réponse à votre deuxième question est simple:
$-
liste l'ensemble actuel d'options. Ceux-ci peuvent être définis par les paramètres de la ligne de commande à bash
ou par l'intermédiaire de l' set
. Il faut donc regarder deux endroits dans le manuel:
Section OPTIONS
:
-i If the -i option is present, the shell is interactive.
SHELL BUILTIN COMMANDS
section, sous- set
:
-h Remember the location of commands as they are looked up for execution. This is enabled by default. -m Monitor mode. Job control is enabled. This option is on by default for interactive shells on systems that sup‐ port it (see JOB CONTROL above). Background processes run in a separate process group and a line containing their exit status is printed upon their completion. -B The shell performs brace expansion (see Brace Expansion above). This is on by default. -H Enable ! style history substitution. This option is on by default when the shell is interactive.