Que fait «Exécuter la commande en tant que shell de connexion»?

28

J'ai quelques programmes distincts installés, dont certains nécessitent que j'aille dans mes paramètres de terminal GUI et active / désactive l'option "Exécuter la commande en tant que shell de connexion" pour que les deux fonctionnent.

Exemple:

J'ai installé Ruby on Rails . Malheureusement, je dois aller dans les options du terminal et activer "Exécuter la commande en tant que shell de connexion" pour qu'elle soit dans mon CHEMIN.

Ce n'était pas trop un problème jusqu'à ce que j'installe sexy-bash-prompt , qui ne fonctionne que si l'option est désactivée.

Donc ma question est essentiellement: que fait "Exécuter la commande en tant que shell de connexion"? Existe-t-il un moyen de faire fonctionner les choses qui s'exécutent lorsqu'il est désactivé lorsque vous exécutez en tant que shell de connexion?

AlbertEngelB
la source

Réponses:

31

En supposant que votre shell est Bash (la valeur par défaut dans Ubuntu), voici les différences:

  • Lors de l'exécution en tant que shell de connexion , Bash lira ~/.bash_profile(ou, si cela n'existe pas ~/.profile) au démarrage. Dans certains cas, ce fichier se lit ~/.bashrcégalement.

  • Lors de l'exécution en tant que shell sans connexion , Bash lira ~/.bashrc.

Alors, pourquoi voyez-vous des comportements différents lors de l'exécution en tant que shell de connexion / non-connexion? Parce que votre .bash_profile/ .profilefait des choses différentes de la vôtre .bashrc.

La solution que je recommande dans votre cas est de copier les personnalisations apportées .bash_profile/ .profile, coller les dans .bashrcet désactiver « commande Exécuter en tant que shell de connexion ».

Andrea Corbellini
la source
Ah d'accord. J'ai pensé que cela avait à voir avec le profil de connexion qu'il lisait (le source .bashrc corrige certains des problèmes que j'avais). Je vais essayer, désolé pour la question horriblement écrite.
AlbertEngelB
Merci pour l'explication concise. Il n'est pas rare de voir des gens conserver leurs personnalisations dans .bashrc et avoir .bash_profile pour source .bashrc. Les personnalisations spécifiques à la connexion doivent être conservées dans .bash_profile uniquement.
MichaelZ
1
Pourquoi ne pas simplement source .bashrc dans .bash_profile et laisser le shell de connexion activé? Est-ce faisable?
Dr.Nefario