GNU/Linux >> Znalost Linux >  >> Ubuntu

Je ~/.profile zdrojem Bash?

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?
Ubuntu
  1. Jak napsat automaticky generovaný skript Shell do /etc/profile?

  2. Pomozte mi porozumět .profile, .bashrc atd.?

  3. Synchronizace bash profilu mezi počítači

  1. Bash skriptování (I)

  2. Zobrazení výzvy Bash Hh:mm:ss?

  3. Python ve srovnání s Bash?

  1. Proměnná exportu Bash

  2. Řazení v bash

  3. příkaz pro export bash