Saya mencoba membuat variabel penghitung global untuk melihat berapa kali ~/.profile
akan dieksekusi. Jadi:
Dalam ~/.bashrc
:
# ...
if [ "$PROFILE_EXEC_TIMES" = "" ]; then
export PROFILE_EXEC_TIMES=0
fi
let "PROFILE_EXEC_TIMES += 1"
Di ~/.profile
:
# ...
export PROFILE_EXEC_TIMES
let "PROFILE_EXEC_TIMES += 1"
Tetapi ketika saya membuka shell baru dan menulis echo $PROFILE_EXEC_TIMES
, yang saya dapatkan hanyalah 1
. $PROFILE_EXEC_TIMES
harus minimal 2. Saya menduga bahwa ~/.profile
tidak bersumber dari bash… jika demikian, apa yang harus saya lakukan untuk memeriksa berapa kali ~/.profile
dieksekusi?
Sunting:
Saya perhatikan bahwa /etc/gdm/Xsession
adalah sumber ~/.profile
dengan baris berikut:
test -f "$HOME/.profile" && . "$HOME/.profile"
dan ~/.bashrc
bersumber di ~/.profile
dengan baris berikut:
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
Juga, saya telah menambahkan baris berikut ke ~/.bashrc
&~/.profile
:
echo $(cd ${0%/*} && echo $PWD/${0##*/}) >> /home/myUserName/a
dan dapat melihat bahwa hanya satu baris yang ditambahkan ke file setelah saya masuk ke pengguna saya.
Saya ingin menekankan bahwa tujuan saya di sini adalah:
Mencari tahu berapa kali ~/.profile
dijalankan saat pengguna masuk.
Detail tambahan:
$ 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"
- /etc/gdm/Xsession saya
- ~/.bashrc saya
- ~/.profil saya
Jawaban yang Diterima:
Dari komentar Anda pada jawaban asli saya, tampaknya pertanyaan Anda yang sebenarnya adalah “Apakah ~/.profile bersumber dari GNOME?” Jawabannya iya. Lihat di /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"
Jawaban Asli
Dari halaman manual bash:
Ketika bash dipanggil sebagai shell login interaktif, atau sebagai
shell non-interaktif dengan opsi –login
, pertama-tama ia
membaca dan mengeksekusi perintah dari file /etc/profile, jika file
itu ada. Setelah membaca file itu,
mencari~/.bash_profile
,~/.bash_login
, dan~/.profile
, dalam urutan itu, dan
membaca dan mengeksekusi perintah dari
yang pertama
yang ada dan dapat dibaca.
Jadi Anda mungkin memiliki file bernama .bash_profile atau .bash_login di direktori home Anda. Jika salah satu dari ini ada, bash akan menggunakannya sebagai ganti .profile.
Terkait:Bagaimana cara membaca nilai kunci default dengan dconf atau gsettings?