.profile ne fonctionne pas quand je démarre un terminal bash

14

Lorsque je démarre un terminal bash, mon fichier .profile n'est pas en cours d'exécution. Je n'ai ni ~ / .bash_profile ni ~ / .bash_login, donc .profile est censé s'exécuter, n'est-ce pas? Quoi d'autre pourrait-être faux?

David Doria
la source

Réponses:

22

Ce n'est pas un shell de connexion.

Si un shell est un shell de connexion, il recherchera .bash_profile s'il existe, puis .profile. D'autres coquilles recherchent .bashrc

Donc, vous pouvez mettre les objets que vous voulez dans chaque instance de shell dans .bashrc et éventuellement avoir une référence qui code .bashrc dans .profile.

Donc: .bashrc:

stuff you want

fin de .profile:

[ -n "$BASH" ] && [ -f ~/.bashrc ] && . ~/.bashrc
Rich Homolka
la source
Donc, quand je lance 'konsole' dans KDE, c'est un shell non-login, non? Sur un autre ordinateur, j’ai définitivement mis des fichiers .profile et les ai fait fonctionner lorsque j’ouvre un terminal de ce type - je suppose que je ne comprends pas quand vous voulez que quelque chose de différent se produise lors de la connexion ou lorsque vous ouvrez un terminal?
David Doria
@DavidDoria ça dépend, j'ai changé de config ou fait des alias pour ce que konsole tourne, pour le faire fonctionner bash --login. Dans votre cas, il semble que vous exécutiez bash, ce qui par défaut ne déclenchera pas un shell de connexion
Rich Homolka le
Si vous utilisez LightDM, cela pourrait en être la raison. Les autres gestionnaires d’affichage tels que GDM et KDM source .profile lors de la connexion, mais LightDM ne le fait pas (par conception). Voir bugs.debian.org/cgi-bin/bugreport.cgi?bug=636108
WakiMiko le
J'utilise KDM.
David Doria
2
Si vous utilisez Gnome Terminal, vous pouvez faire Édition-> Préférences de profil, aller à l'onglet Titre et commande, et cocher "Exécuter la commande en tant que shell de connexion". Il recherchera ensuite votre fichier .bash_profile ou .profile chaque fois que vous ouvrirez un terminal, comme prévu.
Lambart le
3

essayez d'utiliser à la ~/.bashrcplace.

goweon
la source
1

Si vous utilisez un bureau graphique, le fichier .profile doit être généré par votre gestionnaire de bureau. Lightdm crée le fichier .profile maintenant, du moins sur Ubuntu. Voir: https://bugs.launchpad.net/ubuntu/+source/lightdm/+bug/794315

Avec kdm et Kubuntu-12.04, le fichier / etc / kde4 / kdm / Xsession est recherché, ce qui inclut le fichier .profile. Kubuntu-12.10 utilisera probablement lightdm. Ubuntu 12.04 utilise lightdm pour que / usr / sbin / lightdm-session sources .profile.

Je pense que la solution consiste à (1) définir / exporter les paramètres d'environnement dans ~ / .profile et (2) à obtenir un .profile créé par .bash_profile:

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

(et ne pas avoir .bashrc obtenu par .profile ou .bash_profile).

Voir également:

Freddy Vulto
la source
1
Ceci explique comment obtenir votre .profilecode source lors de la connexion, mais il se demande en fait comment obtenir bashle code source lorsqu'il lance un terminal (pas lors de la connexion)
cpast
Vous ne devriez pas vouloir que le fichier .profile soit généré lorsque vous lancez un nouveau terminal (à partir de KDE). Le but de .profile est de l’obtenir une fois lors de la connexion, soit sur un terminal graphique, soit sur un terminal texte; .profile aurait dû être trouvé au moment où vous vous êtes connecté à KDE.
Freddy Vulto
.profile devrait être recherché par votre gestionnaire de bureau. Cela dépend de la compréhension de l'objectif du fichier. Dans Debian, / etc / profile (et ~ / .profile en tant qu’extension) est destiné aux shells de type bash .
Alois Mahdal
Vous n'avez pas besoin de le source à nouveau SI sa source lors de la connexion. votre bash en héritera à moins que vous ne fassiez quelque chose d'idiot comme "export PATH = ~ / .bin" ou quelque chose qui provoque son écrasement.
HörmannHH