Ich versuche, eine globale Zählervariable zu erstellen, um zu sehen, wie oft ~/.profile
hingerichtet wird. Also:
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"
Aber wenn ich eine neue Shell öffne und schreibe echo $PROFILE_EXEC_TIMES
, alles, was ich bekomme, ist 1
. $PROFILE_EXEC_TIMES
muss mindestens 2 sein. Ich vermute, dass ~/.profile
wird nicht von bash bezogen … wenn ja, was muss ich tun, um zu überprüfen, wie oft ~/.profile
wird ausgeführt?
Bearbeiten:
Mir ist aufgefallen, dass /etc/gdm/Xsession
bezieht ~/.profile
durch die folgende Zeile:
test -f "$HOME/.profile" && . "$HOME/.profile"
und ~/.bashrc
wird in ~/.profile
bezogen durch die folgenden Zeilen:
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
Außerdem habe ich die folgende Zeile zu ~/.bashrc
hinzugefügt &~/.profile
:
echo $(cd ${0%/*} && echo $PWD/${0##*/}) >> /home/myUserName/a
und konnte sehen, dass der Datei nur eine Zeile hinzugefügt wurde, nachdem ich mich bei meinem Benutzer angemeldet hatte.
Ich möchte betonen, dass mein Ziel hier ist:
Herauszufinden, wie oft ~/.profile
wird ausgeführt, wenn sich der Benutzer anmeldet.
Zusätzliche Details:
$ 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"
- Meine /etc/gdm/Xsession
- Meine ~/.bashrc
- Mein ~/.profil
Akzeptierte Antwort:
Aus Ihren Kommentaren zu meiner ursprünglichen Antwort geht hervor, dass Ihre eigentliche Frage lautet:„Ist ~/.profile von GNOME bezogen?“ Die Antwort ist ja. Schauen Sie in /etc/gdm/Xsession
nach :
# 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"
Originalantwort
Aus der Manpage von bash:
Wenn bash als interaktive Login-Shell oder als
nicht interaktive Shell mit der Option –login
aufgerufen wird, liest es zuerst
Befehle aus der Datei /etc/profile und führt sie aus, falls diese
Datei existiert. Nach dem Lesen dieser Datei
sucht es nach ~/.bash_profile
, ~/.bash_login
, und ~/.profile
, in dieser Reihenfolge, und
liest und führt Befehle aus dem
ersten
aus, der existiert und lesbar ist.
Sie haben also möglicherweise eine Datei namens .bash_profile oder .bash_login in Ihrem Home-Verzeichnis. Wenn eines davon existiert, verwendet Bash es anstelle von .profile.
Verwandte:Wie liest man den Standardschlüsselwert mit dconf oder gsettings?