GNU/Linux >> Belajar Linux >  >> Linux

Urutan eksekusi untuk .bash_profile, .bashrc, .bash_login, .profile dan .bash_logout

Artikel ini akan menjelaskan urutan eksekusi file berikut:

  • /etc/profile
  • ~/.bash_profile
  • ~/.bashrc
  • ~/.bash_login
  • ~/.profile
  • ~/.bash_logout

Urutan eksekusi untuk shell login interaktif

Kode semu berikut menjelaskan urutan eksekusi file-file ini.

execute /etc/profile
IF ~/.bash_profile exists THEN
    execute ~/.bash_profile
ELSE
    IF ~/.bash_login exist THEN
        execute ~/.bash_login
    ELSE
        IF ~/.profile exist THEN
            execute ~/.profile
        END IF
    END IF
END IF

Saat Anda logout dari shell interaktif, berikut adalah urutan eksekusinya:

IF ~/.bash_logout exists THEN
    execute ~/.bash_logout
END IF

Harap dicatat bahwa /etc/bashrc dijalankan oleh ~/.bashrc seperti yang ditunjukkan di bawah ini:

# cat ~/.bashrc
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

Urutan eksekusi untuk shell non-login interaktif

Saat meluncurkan shell interaktif non-login, berikut adalah urutan eksekusi:

IF ~/.bashrc exists THEN
    execute ~/.bashrc
END IF

Catatan: Saat shell non-interaktif dijalankan, shell akan mencari variabel lingkungan ENV, dan mengeksekusi nilai nama file yang disebutkan dalam variabel ENV.

Uji urutan eksekusi

Salah satu cara untuk menguji urutan eksekusi adalah dengan menambahkan nilai PS1 yang berbeda ke file-file ini dan masuk kembali ke shell dan melihat nilai PS1 mana yang diambil oleh prompt Linux. Juga, sebelumnya kita telah membahas tentang cara menggunakan PS1 untuk membuat prompt Linux Anda fungsional dan bergaya.

1. /etc/profile dieksekusi. Tambahkan baris PS1 berikut ke /etc/profile dan login ulang untuk memastikan perintah Linux berubah ke nilai PS1 yang disetel di dalam /etc/profile.

# grep PS1 /etc/profile
PS1="/etc/profile> "

[Note: re-login to see the prompt change as shown below]
Last login: Sat Sep 27 16:43:57 2008 from 192.168.1.2
/etc/profile>

Pastikan ~/.bash_profile tidak memiliki PS1 agar hal di atas berfungsi dengan baik.

2. ~/.bash_profile dieksekusi: Tambahkan PS1 berikut ke ~/.bash_profile, ~/.bash_login, ~/.profile dan ~/.bashrc. Login ulang untuk memastikan perintah Linux berubah ke nilai PS1 yang disetel di dalam  ~/.bash_profile seperti yang ditunjukkan di bawah ini.

/etc/profile> grep PS1 ~/.bash_profile
export PS1="~/.bash_profile> "

/etc/profile> grep PS1 ~/.bash_login
export PS1="~/.bash_login> "

/etc/profile> grep PS1 ~/.profile
export PS1="~/.profile> "

/etc/profile> grep PS1 ~/.bashrc
export PS1="~/.bashrc> "

[Note: Upon re-login, it executed /etc/profile first and ~/.bash_profile next.
So, it took the PS1 from ~/.bash_profile as shown below.
It also did not execute ~/.bash_login, as ~/.bash_profile exists]
Last login: Sat Sep 27 16:48:11 2008 from 192.168.1.2
~/.bash_profile>

3. ~/.bash_login dieksekusi. Ganti nama .bash_profile menjadi yang lain. Login ulang untuk memastikan perintah Linux berubah ke nilai PS1 yang disetel di dalam  ~/.bash_login seperti yang ditunjukkan di bawah ini.

~/.bash_profile> mv .bash_profile bash_profile_not_used

[Note: Upon re-login, it executed /etc/profile first.
Since it cannot find ~/.bash_profile, it executed ~/.bash_login]
Last login: Sat Sep 27 16:50:55 2008 from 192.168.1.2
~/bash_login>

4. ~/.profile dieksekusi. Ganti nama .bash_login menjadi sesuatu yang lain. Login ulang untuk memastikan perintah Linux berubah ke nilai PS1 yang disetel di dalam  ~/.profile seperti yang ditunjukkan di bawah ini.

~/.bash_login> mv .bash_login bash_login_not_used

[Note: Upon re-login, it executed /etc/profile first.
Since it cannot find ~/.bash_profile and ~/.bash_login, it executed ~/.profile]
Last login: Sat Sep 27 16:56:36 2008 from 192.168.1.2
~/.profile>

5. ~/.bashrc dijalankan untuk pengujian shell non-login . Menjalankan bash” pada command prompt akan memberikan shell non-login lain, yang akan memanggil .bashrc seperti yang ditunjukkan di bawah ini.

~/.profile> bash

[Note: This displays PS1 from .bashrc as shown below.]
~/.bashrc> exit
exit

[Note: After exiting from non-login shell, we are back to login shell]
~/.profile>


Jika Anda menyukai artikel ini, silakan bookmark di del.icio.us dan Tersandung .


Linux
  1. Bagaimana saya menggunakan Ansible dan anacron untuk otomatisasi

  2. Apa. ~/.bashrc Perintah Lakukan??

  3. Di mana .bashrc untuk root?

  1. 10 tutorial perintah Linux untuk pemula dan ahli

  2. Lembar contekan untuk pengguna dan izin Linux

  3. Panduan Bash For Loop dan Contohnya

  1. Perbedaan Antara ~/.profile Dan ~/.bash_profile?

  2. Contoh Bash For Loop dan While Loop

  3. Panduan Eksekusi Skrip Shell untuk Pemula