60 votes

Quelle est la différence entre un shell bash "connexion" et un shell bash "interactif" ?

Quelle est la différence entre un shell bash ‘Login’ et un shell bash ‘Interactive’? J'ai cité Wikipedia ci-dessous mais est-ce que quelqu'un peut donner une meilleure réponse?

EDIT : Ceci est un wiki communautaire donc plutôt que de voter pour fermer, pourriez-vous fournir des exemples de situations qui nécessitent quel type de $SHELL

Scripts de démarrage

Lorsque Bash démarre, il exécute les commandes dans différents scripts.

Lorsque Bash est invoqué en tant que shell de connexion interactif, il lit d'abord et exécute les commandes du fichier /etc/profile, si ce fichier existe. Après avoir lu ce fichier, il recherche ~/.bash_profile, ~/.bash_login et ~/.profile, dans cet ordre, et lit et exécute les commandes du premier qui existe et est lisible.

Lorsqu'un shell de connexion se termine, Bash lit et exécute les commandes du fichier ~/.bash_logout, s'il existe.

Lorsqu'un shell interactif qui n'est pas un shell de connexion est lancé, Bash lit et exécute les commandes de ~/.bashrc, si ce fichier existe. Cela peut être inhibé en utilisant l'option --norc. L'option --rcfile fichier forcera Bash à lire et exécuter les commandes de fichier au lieu de ~/.bashrc.

2 votes

J'ai édité la question pour qu'elle corresponde davantage aux règles du site à moitié fait. Je ne pense pas que je comprendrai jamais le désir de supprimer des informations utiles...

9 votes

Pourquoi les gens votent-ils négativement cette question ? Pour moi, cela semble totalement légitime.

3 votes

Ugh, retirez la réponse de votre question, et publiez-la ensuite comme réponse. Il est permis de répondre à sa propre question.

23voto

Zachary Scott Points 146

Dans les fichiers de profil de votre shell de connexion, vous pouvez configurer certaines choses que vous utiliserez lors de votre session, et qui ne doivent être faites qu'une fois. Quelques idées :

  • créez un fichier temporaire contenant l'adresse IP à partir de laquelle vous vous êtes connecté, que vous pourrez inclure ultérieurement dans certains scripts définissant des règles de pare-feu.
  • exécutez ssh-agent, demandez vos clés SSH et stockez les variables d'environnement de l'agent SSH dans un fichier.
  • si c'est une machine limitée et que vos collègues veulent être informés des connexions les uns des autres, écrivez des messages (write(1)) pour les informer de votre connexion.

Dans les fichiers d'un shell non connecté (.bashrc), vous devriez configurer votre shell :

  • Promp fancy
  • définir des alias
  • définir des options d'historique
  • définir des fonctions shell personnalisées
  • exporter des variables d'environnement (peut-être PAGER, EDITOR si les paramètres globaux sont mauvais)
  • charger les variables ssh-agent enregistrées dans .bash_profile

Généralement, vous incluriez .bashrc à partir de .bash_profile avec ce qui suit. Ainsi, le shell de connexion obtient toutes vos personnalisations, et le fichier .bash_profile n'a pas à dupliquer les éléments qui se trouvent déjà dans .bashrc.

[[ -f ~/.bashrc ]] && . ~/.bashrc

6 votes

Est-ce qu'un shell de connexion est le premier qui démarre lorsque vous êtes fraîchement connecté sur la machine ? Tous les autres shells que vous ouvrez après peuvent être interactifs ou non. Un shell qui s'exécute à partir de cron ? Semble non interactif, mais est-ce une connexion ? Et si vous n'êtes pas sur la machine ? Ce sont les questions qui restent sans réponse

6 votes

Maintenant, CECI est une réponse que je peux comprendre : linuxquestions.org/questions/linux-general-1/…

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X