Effet d'une commandes dans ~/.bash_profile

Bonjour,

J’ai installé une Debian “squeeze” que j’ai “upgradé” ensuite à “wheezy”. Tout ne fonctionne qu’en ligne de commande (mon noyau est 2.6.32-5-686).

J’ai commencé à étudier LFS (Linux From Scratch). je n’en suis qu’au début.

J’ai un petit problème avec l’utilisation du “~/.bash_profile” d’un compte utilisateur lambda. Il a été créé comme suit :
cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1=’\u:\w$ ’ /bin/bash
EOF

Si j’ai bien compris, le contenu de ce fichier devrait être pris en compte à l’ouverture de session, après celui du fichier /etc/profile/.
Je devrai m’en apercevoir en voyant mon prompt changer mais ça ne fonctionne pas : mon prompt reste le même.

Qu’est-ce qui empeche la prise en compte de mon “bash_profile” ?

D’avance merci !

Claude.

As tu esasyé ta ligne de connamde dans un shell normal pour voir s’il c’était elle qui n’avait pas de problème.
Ensuite il faut faire attention à la casse (Majuscule/minuscule) dans le nommage des fichier.
Enfin je te dirais que “.profile” est suffisant si tes scripts ne sont pas spécifique à Bash.

Le $SHELL est-il bash ou bien zsh, ksh, dash … ?
$ echo $SHELL
$ env
N’y aurait-il pas un fichier ~/.bashrc qui définisse $PS1 traînant en $HOME ?
$ grep PS1 .bashrc
Compare-le avec celui de
$ echo $PS1

/bin/sh ou /bin/bash ?

If bash is invoked with the name sh, it tries to mimic the startup behavior of historical versions of sh as closely as possible, while conforming to the POSIX standard as well. When invoked as an interac‐ tive login shell, or a non-interactive shell with the --login option, it first attempts to read and execute commands from /etc/profile and ~/.profile, in that order.

Voir /etc/profile
System-wide .bashrc file for interactive shells.

$ man bash

When bash is invoked as an interactive login shell, or as a non-inter‐ active shell with the --login option, it first reads and executes com‐ mands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable. The --noprofile option may be used when the shell is started to inhibit this behavior.

Merci à vous deux pour vos réponses !

Rien n’y fait.
Cela m’ennuie car il s’agit d’avoir un environnement libéré au maximum du système hote sur lequel je dois compiler un “Linux tout neuf”. Ce dernier ne doit pas hériter des variables d’environnement de l’hote…

Je préfère ne pas aller plus loin sans m’affranchir de ma compréhension du détail.
Je vais reprendre la procédure de zéro et vous tiendrai au courant.

Encore merci !

Claude.

Est-ce que .bash_profile est éxécutable?
Est-il chargé? Pour t’en assurer, ajoute ceci dans le .profile :

[quote=“thuban”]Est-ce que .bash_profile est éxécutable?
Est-il chargé? Pour t’en assurer, ajoute ceci dans le .profile :

. ~/.bash_profile

Merci pour cette piste !
Non, il ne l’était pas. J’ai changé ça par un ‘chmod +x…’ et ai refait une ouverture de session : Pas mieux.

Pas contre si j’ajoute ‘–norc’ à ma commande, ça fonctionne. Elle devient donc :
exec env -i HOME=$HOME TERM=$TERM PS1=’\u:\w$ ’ /bin/bash --norc

Cela voudrait dire que le shell lancé par ma commande est un “shell interactif sans connexion” et que les commandes du fichier “/etc/bash.bashrc” écrasent ma variable “PS1”
Ce comportement est décrit dans “info bash”, dans la section “APPEL”.

Dans le contexte d’une création “Linux From Scratch”, j’ai du mal à mesurer les conséquences de tout ça :laughing:
Le but était de créer un environnement le plus indépendant possible du système hote avant de commencer la construction du LFS.
Je vais peut être rester avec mon “–norc” pour l’instant car il m’affranchit de l’execution du “bash.bashrc”. Ca ne peut pas faire de mal :smiley:

Et je vais avancer un peu… :119

Encore merci !

Claude.