Post-installation : quand le .profile est-il pris en compte ?

Bonjour à tous,
je viens d’installer la 9.1 Xfce.
Les lignes suivantes du .profile semblent ne pas être prises en compte quand j’ouvre un terminal :
# set PATH so it includes user’s private bin if it exists
if [ -d “$HOME/bin” ] ; then
_ PATH="$HOME/bin:$PATH"_
fi
Il faut que je fasse :
. .profile
à la main.
Comment faire pour avoir automatiquement $HOME/bin dans mon PATH ?
Je ne me souviens pas avoir déjà rencontré ce problème lors d’installations précédentes.

Comme ceci

Dans ton fichier .profile dans ton home :

In your ~/.profile you find these lines:

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

source

Bonsoir li

Extrait de l’en-tête du fichier ~/.profile :


~/.profile: executed by the command interpreter for login shells.

Quand tu utilises l’émulateur de terminal de ta session graphique,
les commandes contenues dans le fichier ~/.profile ne sont pas exécutées
car tu es déjà identifié <=> tu ne te “loge” pas => ce n’est donc pas un “login shell”

Pour que les commandes contenues dans le fichier ~/.profile soient exécutées
il te faudrait ouvrir un “login shell” <=> dans lequel tu devras te “loger”,
comme par exemple, avec Ctrl+Alt+F1 à Ctrl+Alt+F6
qui sont les raccourcis qui te permettront d’activer une des 6 premières consoles qui sont en mode texte.

Pour revenir dans le mode graphique, comme c’est la 7ème console qui est utilisée pour le serveur X,
depuis une des consoles en mode texte, tu pourras utiliser le raccourci clavier Alt+F7

salut
es tu certain que la condition est remplie? c’est a dire qu’il existe un dossier bin dans ton home
https://bash.cyberciti.biz/guide/File_attributes_comparisons#-d_dir
-d dir
True if file exists and is a directory.

Justement j’ai déjà ces lignes dans mon .profile comme indiqué dans mon message initial et je m’étonne qu’elles ne soient pas prises en compte.

Merci pour ton explication !
Cependant la solution est compliquée et je n’avais pas à faire cela avec les versions antérieures de Debian.
Avec la version 7.8 (Cinnamon) d’un autre PC à partir duquel je suis en train de t’écrire mon bin personnel se trouve dans le PATH de façon automatique à chaque fois que j’ouvre un terminal en mode graphique.

Oui puisque quand je fais . .profile le répertoire $HOME/bin est mis dans le PATH et toutes les commandes présentes dans $HOME/bin sont reconnues.

Éventuellement, pour t’amuser à tester,
si tu as déjà créé ton répertoire ~/bin
depuis une fenêtre de l’émulateur de terminal de ton environnement de bureau,
tu pourrais ouvrir un “login shell” en entrant la commande :

su --login $USER

ou bien, avec la même option, mais en beaucoup plus court :

su - $USER

michel@debg53sw:~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
michel@debg53sw:~$ 
michel@debg53sw:~$ su --login $USER
Mot de passe : 
michel@debg53sw:~$ 
michel@debg53sw:~$ echo $PATH
/home/michel/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
michel@debg53sw:~$ 
michel@debg53sw:~$ exit
déconnexion
michel@debg53sw:~$ 
michel@debg53sw:~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
michel@debg53sw:~$ 

MicP : je suis bien convaincu mais il doit y avoir une solution simple d’emploi.

je n’ai rien change au .profile, c’est bien pris en compte

env | grep PATH
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session7
PATH=/home/guy/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

mais c’est indiqué

This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login exists.

tu n’as pas créé un de ces deux fichiers?

Bonjoir,

En ouvrant ton terminal en interface graphique sans option de login, une solution courante pour l’automatisation de tâches et d’ajouter le script même ou le nom du fichier (éxécutable) le contenant, au fichier de configuration de ton shell. Si tu utilises bash, tu peux modifier le fichier .bashrc, comme indiqué dans ce même fichier : # ~/.bashrc: executed by bash(1) for non-login shells. en procédant ainsi par exemple :

.script_perso

# set PATH so it includes user’s private bin if it exists
if [ -d “$HOME/bin” ] ; then
PATH="$HOME/bin:$PATH"
fi

.bashrc

./.script_perso

# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# If not running interactively, don’t do anything

.profile est lu lors d’un login tty
.xinitrc est lu lors d’un startx
.xsession est lu lors d’un login graphique

Sur Debian j’ai jamais touché à ça mais sur OpenBSD, je mets tout dans .profile.
Mon .xsession lui ne contient que

. .profile
startxfce4 blahblah

De cette manière, j’ai tout ce que je veux en tty et en graphique.

Dans ton cas (lire .profile lors du lancement d’un bash graphique?), je m’inspirerais de @loutr et je “sourcerais” .profile dans mon .bashrc: mettre . .profile dans .bashrc