GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Est-ce que ~/.profile provient de Bash ?

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 ?
Ubuntu
  1. Script bash (I)

  2. Comment écrire un script shell à source automatique dans /etc/profile ?

  3. Aidez-moi à comprendre .profile, .bashrc, etc. ?

  4. Trier en bash

  5. Synchronisation du profil bash entre ordinateurs

Déclaration de cas bash

Instruction Bash if..else

Tableaux bash

Bash Shebang

Commande Bash printf

Tableau associatif dans Bash