Snažím se vytvořit globální proměnnou čítače, abych viděl, kolikrát ~/.profile
je popraven. Tedy:
V ~/.bashrc
:
# ...
if [ "$PROFILE_EXEC_TIMES" = "" ]; then
export PROFILE_EXEC_TIMES=0
fi
let "PROFILE_EXEC_TIMES += 1"
V ~/.profile
:
# ...
export PROFILE_EXEC_TIMES
let "PROFILE_EXEC_TIMES += 1"
Ale když otevřu nový shell a napíšu echo $PROFILE_EXEC_TIMES
, vše, co dostanu, je 1
. $PROFILE_EXEC_TIMES
musí být alespoň 2. Mám podezření, že ~/.profile
nepochází z bash... pokud ano, co musím udělat, abych zkontroloval, kolikrát ~/.profile
je proveden?
Upravit:
Všiml jsem si, že /etc/gdm/Xsession
získává zdroj ~/.profile
na následujícím řádku:
test -f "$HOME/.profile" && . "$HOME/.profile"
a ~/.bashrc
pochází z ~/.profile
na následujících řádcích:
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
Také jsem přidal následující řádek do ~/.bashrc
&~/.profile
:
echo $(cd ${0%/*} && echo $PWD/${0##*/}) >> /home/myUserName/a
a viděl, že do souboru byl přidán pouze jeden řádek poté, co jsem se přihlásil ke svému uživateli.
Chci zdůraznit, že mým cílem zde je:
Zjistit, kolikrát ~/.profile
se spustí, když se uživatel přihlásí.
Další podrobnosti:
$ 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"
- Moje /etc/gdm/Xsession
- Můj ~/.bashrc
- Můj ~/.profil
Přijatá odpověď:
Z vašich komentářů k mé původní odpovědi se zdá, že vaše skutečná otázka je „Je ~/.profile zdrojem GNOME?“ Odpověď je ano. Podívejte se do /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"
Původní odpověď
Z manuálové stránky bash:
Když je bash vyvolán jako interaktivní přihlašovací shell nebo jako
neinteraktivní shell s volbou –login
, nejprve
načte a provede příkazy ze souboru /etc/profile, pokud tento
soubor existuje. Po přečtení tohoto souboru
hledá~/.bash_profile
,~/.bash_login
a~/.profile
, v tomto pořadí a
čte a provádí příkazy od
prvního
, který existuje a je čitelný.
Takže můžete mít ve svém domovském adresáři soubor s názvem .bash_profile nebo .bash_login. Pokud některý z těchto existuje, bash ho použije místo .profile.
Související:Jak číst výchozí hodnotu klíče pomocí dconf nebo gsettings?