Sto cercando di creare una variabile contatore globale per vedere quante volte ~/.profile
viene giustiziato. Quindi:
In ~/.bashrc
:
# ...
if [ "$PROFILE_EXEC_TIMES" = "" ]; then
export PROFILE_EXEC_TIMES=0
fi
let "PROFILE_EXEC_TIMES += 1"
In ~/.profile
:
# ...
export PROFILE_EXEC_TIMES
let "PROFILE_EXEC_TIMES += 1"
Ma quando apro una nuova shell e scrivo echo $PROFILE_EXEC_TIMES
, tutto quello che ottengo è 1
. $PROFILE_EXEC_TIMES
deve essere almeno 2. Sospetto che ~/.profile
non proviene da bash... se sì, cosa devo fare per controllare quante volte ~/.profile
viene eseguito?
Modifica:
Ho notato che /etc/gdm/Xsession
sta cercando ~/.profile
dalla seguente riga:
test -f "$HOME/.profile" && . "$HOME/.profile"
e ~/.bashrc
proviene da ~/.profile
dalle seguenti righe:
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
Inoltre, ho aggiunto la seguente riga a ~/.bashrc
&~/.profile
:
echo $(cd ${0%/*} && echo $PWD/${0##*/}) >> /home/myUserName/a
e ho potuto vedere che solo una riga è stata aggiunta al file dopo aver effettuato l'accesso al mio utente.
Voglio sottolineare che il mio obiettivo qui è:
Scoprire quante volte ~/.profile
viene eseguito quando l'utente effettua l'accesso.
Dettagli aggiuntivi:
$ 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"
- Il mio /etc/gdm/Xsession
- Il mio ~/.bashrc
- Il mio ~/.profile
Risposta accettata:
Dai tuoi commenti sulla mia risposta originale, sembra che la tua vera domanda sia "~/.profile è originato da GNOME?" La risposta è si. Cerca in /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"
Risposta originale
Dalla manpage di bash:
Quando bash viene invocato come shell di login interattiva, o come shell
non interattiva con l'opzione –login
, prima
legge ed esegue i comandi dal file /etc/profile, se quel file
esiste. Dopo aver letto quel file,
cerca ~/.bash_profile
, ~/.bash_login
e ~/.profile
, in quest'ordine, e
legge ed esegue i comandi dal
primo
che esiste ed è leggibile.
Quindi potresti avere un file chiamato .bash_profile o .bash_login nella tua home directory. Se uno di questi esiste, bash lo utilizzerà al posto di .profile.
Correlati:come leggere il valore della chiave predefinito con dconf o gsettings?