[bash] au login, .bashrc n'est pas exécuté :-(

au login, .bashrc n'est pas exécuté :-( [bash] - Logiciels - Linux et OS Alternatifs

Marsh Posté le 11-07-2003 à 00:40:07    

J'ai lu à plusieurs endroits que .bashrc situé dans le home de l'utilisateur était exécuté au login. Soit.
 
Chez moi, je constate que ça marche pas tout le temps :
1)j'initie une cnx ssh , un login m'est demandé
2)je me logue en "bozo", et mes alias présents dans mon .bashrc ne fonctionnent pas. J'en déduis que mon .bashrc n'a pas été exécuté :(
3)je fais "su clown", cette fois les alias de clown fonctionnent
4)logué en clown, je fais "su bozo" (nouvelle session bozo) : cette fois le .bashrc est prix en compte !!!
 
Pourquoi il le fait pas sur une première connexion ?  :??:

Reply

Marsh Posté le 11-07-2003 à 00:40:07   

Reply

Marsh Posté le 11-07-2003 à 08:16:59    

C'est un truc bizarre, en effet, et je n'ai jamais bien compris pourquoi ça le faisait. Pour résoudre ce problème, fais :
 
mv .bashrc .profile
 
Et recrée un .bashrc, et mets-y la ligne suivante :
 
. .profile
 
En fait, le problème, c'est que selon la manière de se logger, c'est soit le .bashrc qui se lance, soit le .profile. Et là, dans un cas comme dans l'autre, tu auras bien ce qu'il faut à chaque fois.
 
Tiens, je me demande en fait si le simple fait de faire un lien symbolique vers le .bashrc, qui s'appellerait .profile, ne fonctionnerait pas. Disons que l'intérêt, pour moi, d'avoir 2 fichiers, c'est l'un des 2 n'est lancé que lorsque qu'on se logge en mode texte, alors qu'ils passent tous les 2 dans un xterm, ce qui me permet de différencier un peu les environnements si nécessaire.

Reply

Marsh Posté le 11-07-2003 à 11:23:41    

Merci pour ta réponse.
 
Pour faire simple, j'ai -temporairement- essayé en faisant un "cp .bashrc .profile"
Malheureusement, ça n'a pas changé le comportement :heink:.
Je me connecte avec PuTTY depuis un poste window$, ça a rien à voir  si?
 
J'ai aussi essayé en créant un alias .profile pointant sur .bashrc -> même comportement :sweat:
 
Ah, spa tout simple linux :o (mais gratifiant ; mais pas tout simple ;))


Message édité par Figti le 11-07-2003 à 11:24:32
Reply

Marsh Posté le 11-07-2003 à 11:28:38    

Mmmmh ... C'est curieux, ça ... Et tu as essayé la méthode qui consiste à mettre « . .profile » dans le .bashrc ?

Reply

Marsh Posté le 11-07-2003 à 12:23:37    

Bah non plus :(
 
Mais bon, je ne l'ai pt'et pas fait comme il faut : j'ai simplement mis une unique ligne dans .bashrc : ". .profile" . Il faut pas faire débuter le script par !#/bin/bash ? (sorry j'ai pas trop l'habitude... :D)
 
En regardant de + près, j'ai vu que j'avais aussi un fichier .bash_profile. Est-ce que c'est là-dedans qu'il faut farfouiller, ou pas du tout...?  :whistle:
 
PS : J'ai oublié de préciser : je suis sous Debian testing/unstable


Message édité par Figti le 11-07-2003 à 12:24:24
Reply

Marsh Posté le 11-07-2003 à 13:36:46    

parce que .bashrc est un script d'initialisation d'un shell interactif qui n'est pas un shelle de login.
 
http://consolemode.org/prods/bash- [...] mments.xml

Reply

Marsh Posté le 11-07-2003 à 13:42:15    

Le .profile est le fichier sourcé par sh.
Le .bash_profile est le fichier sourcé par bash pour un shell de login. Il doit normallement comporter tout l'environnement exporté (PATH...).
Le .bashrc est utilisé dans l'autre cas (pas un shell de login). Il contient tous les alias/fonctions et tout ce qui n'est pas exporté.
 
Il convient donc de mettre ". .bashrc" dans le .bash_profile et non l'inverse.
Ou même mieux de mettre :

Code :
  1. case "$-" in
  2.   *i*) . .bashrc ;;
  3. esac


Afin de ne charger le .bashrc que si le shell est interactif.

Reply

Marsh Posté le 11-07-2003 à 18:02:20    

Merci ; j'y vois plus clair.
En gros, le lien de minisplus explique qu'il existe en fait des "shell de login", des "shell intertactifs", et des "shell non interactifs". :sweat:
En fonction de ces différents shell, ce ne sont pas les memes fichiers qui sont executés au login.
 
Ce qui recoupe le post de ArSuniK : effectivement en ajoutant

Code :
  1. # include .bashrc if it exists
  2. if [ -f ~/.bashrc ]; then
  3.     source ~/.bashrc
  4. fi


(commandes suggérées par Debian; que j'utilise justement ;))
dans le .bash_profile, ça marche nickel !
 
:jap:


Message édité par Figti le 11-07-2003 à 18:05:02
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed