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 .