Que sont les shells de connexion et non-connexion?

64

On dit que les paramètres pour un shell non connecté doivent aller dans .bashrc fichier et les paramètres du shell de connexion pour aller dans .profile fichier.

Qu'entend-on par shell de connexion et non-connexion?

Veuillez expliquer sans utiliser le jargon technique autant que possible.

    
posée DUKE 25.06.2012 - 19:00
la source

2 réponses

71

En quelques mots:

  • Si vous ouvrez un shell ou un terminal (ou si vous en changez un), et qu'il vous demande de vous connecter (nom d'utilisateur? Mot de passe?) avant de recevoir une invite, il s'agit d'un shell de connexion.
  • Si ce n'est pas le cas (comme gnome-terminal ) et vous permet de l'utiliser immédiatement, il s'agit d'un shell non connecté.

Si vous êtes un utilisateur normal d'Ubuntu Desktop, le shell de connexion only est ... votre bureau (vous tapez un mot de passe pour entrer, bien;)? Eh bien, techniquement, c'est un shell de connexion qui démarre une interface graphique, mais cela devient un jargon. Et oui, il lira les paramètres dans .profile

La seule fois où vous (un utilisateur normal) verra probablement un shell de connexion qui ressemble à un shell de connexion si vous rencontrez des problèmes avec votre bureau et que vous passez à un terminal virtuel avec le Ctrl + Alt + F1 raccourci.

Les autres cas généraux pour avoir un shell de connexion incluent:

  • accéder à votre ordinateur à distance via ssh (ou se connecter localement avec ssh localhost )
  • simuler un shell de connexion initial avec bash -l (ou sh -l )
  • simuler un shell de connexion root initial avec sudo -i
    • ou sudo -u username -i pour un autre utilisateur non root
  • authentification en tant qu'autre utilisateur non root avec su - username (et leur mot de passe )
  • utilisation de la commande sudo login pour changer d'utilisateur
réponse donnée ish 26.06.2012 - 04:28
la source
7

Je ne pense pas que la réponse correcte puisse être donnée sans "jargon technique". Étant donné que cette question est la première à apparaître dans Google pour la requête "Qu'est-ce qu'un shell de connexion", je propose une réponse plus correcte ci-dessous:

Le shell de connexion est simplement un shell auquel on a demandé d’être un shell de connexion. Cela signifie que pas signifie shell qui apparaît après que vous vous connectiez, bien que généralement l'application qui vous connecte indique au shell qu'il se lance comme un shell de connexion. Il existe les moyens suivants d’indiquer à shell qu’il devrait s’agir d’un identifiant de connexion:

  1. Exécution du shell avec l'argument -l ou --login en supposant qu'il le sache (je ne connais aucun shell qui ne connaisse pas -l , mais --login n'est supporté que par quelques shells).
  2. Exécution du shell avec argv[0] défini sur -{some_string} (c'est-à-dire que HYPHEN-MINUS a été ajouté à argv[0] habituel ou à une autre chaîne). C'est ce que font ssh et su: su exécute simplement l'exécutable avec -su comme argv[0] (bonjour à tout le monde pensant que argv[0] a quelque chose à voir avec le nom de l'exécutable), ssh exécute zsh avec -zsh /bin/zsh comme sa coquille.

La logique du shell n’a absolument rien à voir avec quiconque vous demande un mot de passe ou exécute une autre procédure d’authentification. Certains programmes comme ssh ou login (ou certains émulateurs de terminaux comme urxvt) exécutent des shells en tant que login en utilisant argv[0] qui commence par un HYPHEN-MINUS. Certains comme su ou sudo (ou zsh: voir le modificateur - precommand décrit dans la section MODCATEURS DE PRECOMMAND dans man zshmisc ) ne le font pas par défaut, mais on peut le leur dire. Certains ont la seule option pour dire à shell d'être le login en utilisant son argument (c'est-à-dire bash -l ): ssh avec un argument de commande (qui indique explicitement à ssh ce qu'il doit exécuter à l'extrémité distante).

En général, il est préférable de consulter au préalable la documentation du programme utilisé pour appeler le shell afin de déterminer si le shell sera le login et d’effectuer des tests pour déterminer si l’application lancera un shell de connexion (par exemple en ajoutant echo à .profile ).

    
réponse donnée ZyX 17.01.2015 - 21:33
la source

Lire d'autres questions sur les étiquettes