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_logina~/.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?