GNU/Linux >> Belajar Linux >  >> Ubuntu

Apakah ~/.profile Bersumber Dari Bash?

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?
Ubuntu
  1. Bagaimana Cara Menulis Skrip Shell yang Bersumber Secara Otomatis Ke /etc/profile?

  2. Tampilan Prompt Bash Hh:mm:dd?

  3. perintah ekspor bash

  1. Skrip bash(I)

  2. Bantu Saya Memahami .profile, .bashrc, Dll?

  3. Python Dibandingkan Dengan Bash?

  1. Variabel Ekspor Bash

  2. Menyortir dalam bash

  3. Menyinkronkan profil bash antar komputer