Ainsi, les pages de manuel bash expliquent ce que sont les shells de connexion et interactifs:
Un shell de connexion est un shell dont le premier caractère de l'argument zéro est un -, ou un commençant par l'option --login.
Un shell interactif est un shell démarré sans arguments sans option et sans l'option -c dont l'entrée standard et l'erreur sont tous deux connectés aux terminaux (comme déterminé par isatty (3)), ou un ordinateur démarré avec l'option -i. PS1 est défini et $ - inclut 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 de coques différents:
- Coques de connexion interactives,
- Coques de connexion non interactives,
- Shells interactifs sans connexion,
- Shells non interactifs sans connexion
Mais pourquoi avons-nous des shells interactifs / non interactifs et de connexion / non-connexion en premier lieu? Pourquoi la variété? Que perdrions-nous si nous n'avions qu'un seul type d'obus?
De plus, lorsque j'essaie de déterminer si je suis dans un shell de connexion en exécutant echo $-
, il génère:
himBH
Certains de ces drapeaux sont expliqués ici , mais h
, H
et m
ne sont pas expliquées. Y a-t-il un endroit qui décrit tous ces drapeaux?