Bash ne charge pas «.profile» dans une nouvelle session sous Linux

Aug 16 2010

Je suis en train de configurer une nouvelle machine Linux que j'ai obtenue de notre service informatique et .profileque je remarque qu'elle n'est pas chargée lorsque je démarre une nouvelle session de terminal. Le shell actuel est Bash , bien que je l'ai changé du sh par défaut avec lequel il était livré. Comment le charger .profileau démarrage?

J'accéder au shell via SSH : ssh myusername@remotemachine. J'ai des privilèges d'administrateur dessus.

Réponses

24 Pauseduntilfurthernotice. Aug 16 2010 at 14:38

Lorsque Bash démarre en tant que shell de connexion interactif, l'un des fichiers qu'il peut traiter est ~/.profile.

Quand il démarre en tant que shell interactif sans connexion, ce n'est pas le cas. Il traite /etc/bash.bashrc(si ce fichier ou un fichier similaire est activé dans votre version de Bash) et ~/.bashrc.

Vous pouvez ajouter ce qui suit à votre ~/.bashrc(mais faites attention aux boucles ou aux valeurs modifiées par inadvertance):

. $HOME/.profile
16 RichHomolka Aug 16 2010 at 17:28

Cela dépend en quelque sorte de la façon dont vous démarrez votre shell. Comme d'autres l'ont dit, un shell de connexion chargera votre profil (il cherchera d'abord .bash_profile, puis essaiera .profile). S'il en trouve un, il les charge. Un shell sans connexion (interactif ou non interactif) va générer .bashrc.

Je suggérerais de tout mettre dans .bashrc. La division .profile / .bashrc était un peu arbitraire et avait plus de sens dans l'ancien temps d'UNIX lorsque tty n'était pas seulement un nom de périphérique et signifiait un TeleType réel. Il était destiné à démarrer certaines choses (comme vérifier le courrier) sur la connexion «principale» à un serveur, et juste des éléments de configuration normaux pour d'autres shells. Dans la plupart des Linux, vous vous connectez maintenant, vous ne vous connectez pas vraiment à un shell, car vous vous connectez à une interface graphique (KDE, gnome, CDE 'shudder'). Les "processus de connexion spawn" sont maintenant pris en charge par votre gestionnaire de session. C'est beaucoup moins pertinent maintenant.

Ma suggestion: faites en sorte que votre .profile se compose uniquement de:

[ -f $HOME/.bashrc ] && . $HOME/.bashrc

en tant que première ligne de .bashrc, protégez-vous contre des choses étranges lors de l'exécution d'un script bash en sautant tôt:

[[ $- != *i* ]] && return