J'essaie de créer une variable de compteur globale pour voir combien de fois ~/.profile
se fait exécuter. Ainsi :
Dans ~/.bashrc
:
# ...
if [ "$PROFILE_EXEC_TIMES" = "" ]; then
export PROFILE_EXEC_TIMES=0
fi
let "PROFILE_EXEC_TIMES += 1"
Dans ~/.profile
:
# ...
export PROFILE_EXEC_TIMES
let "PROFILE_EXEC_TIMES += 1"
Mais quand j'ouvre un nouveau shell et que j'écris echo $PROFILE_EXEC_TIMES
, tout ce que j'obtiens est 1
. $PROFILE_EXEC_TIMES
doit être au moins 2. Je soupçonne que ~/.profile
n'est pas sourcé par bash… si oui, ce que je dois faire pour vérifier combien de fois ~/.profile
est exécuté ?
Modifier :
J'ai remarqué que /etc/gdm/Xsession
source ~/.profile
par la ligne suivante :
test -f "$HOME/.profile" && . "$HOME/.profile"
et ~/.bashrc
provient de ~/.profile
par les lignes suivantes :
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
De plus, j'ai ajouté la ligne suivante à ~/.bashrc
&~/.profile
:
echo $(cd ${0%/*} && echo $PWD/${0##*/}) >> /home/myUserName/a
et j'ai pu voir qu'une seule ligne a été ajoutée au fichier après que je me sois connecté à mon utilisateur.
Je tiens à souligner que mon objectif ici est :
Savoir combien de fois ~/.profile
est exécuté lorsque l'utilisateur se connecte.
Détails supplémentaires :
$ uname -a
Linux my-desktop 2.6.32-25-generic #45-Ubuntu SMP Sat Oct 16 19:52:42 UTC 2010 x86_64 GNU/Linux
$ cat /etc/*-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=10.04
DISTRIB_CODENAME=lucid
DISTRIB_DESCRIPTION="Ubuntu 10.04.1 LTS"
- Mon /etc/gdm/Xsession
- Mon ~/.bashrc
- Mon ~/.profil
Réponse acceptée :
D'après vos commentaires sur ma réponse d'origine, il semble que votre vraie question soit "Est-ce que ~/.profile provient de GNOME?" La réponse est oui. Regardez dans /etc/gdm/Xsession
:
# First read /etc/profile and .profile
test -f /etc/profile && . /etc/profile
test -f "$HOME/.profile" && . "$HOME/.profile"
# Second read /etc/xprofile and .xprofile for X specific setup
test -f /etc/xprofile && . /etc/xprofile
test -f "$HOME/.xprofile" && . "$HOME/.xprofile"
Réponse originale
À partir de la page de manuel de bash :
Lorsque bash est appelé en tant que shell de connexion interactif, ou en tant que
shell non interactif avec l'option –login
, il lit et exécute d'abord
les commandes du fichier /etc/profile, si ce fichier
existe. Après avoir lu ce fichier,
il recherche~/.bash_profile
,~/.bash_login
, et~/.profile
, dans cet ordre, et
lit et exécute les commandes à partir de la
première
qui existe et est lisible.
Vous pouvez donc avoir un fichier appelé .bash_profile ou .bash_login dans votre répertoire personnel. Si l'un de ces éléments existe, bash l'utilisera à la place de .profile.
En relation :Comment lire la valeur de clé par défaut avec dconf ou gsettings ?