Ini agak rumit. Pertama-tama, detailnya tergantung pada jenis shell yang Anda jalankan. Untuk menjiplak diriku sendiri :
Ketika Anda membuka terminal emulator ( gnome-terminalmisalnya), Anda mengeksekusi apa yang dikenal sebagai shell non-login yang interaktif .
Ketika Anda masuk ke mesin Anda dari baris perintah, atau menjalankan perintah seperti su - username, Anda menjalankan shell login interaktif .
Ketika Anda masuk secara grafis, Anda menjalankan sesuatu yang sangat berbeda. Detailnya akan tergantung pada sistem dan lingkungan grafis Anda, tetapi secara umum, itu adalah shell grafis yang berhubungan dengan login Anda. Sementara banyak shell grafis (termasuk default Ubuntu) akan membaca /etc/profiledan ~/.profiletidak semuanya melakukannya.
Akhirnya, ketika Anda menjalankan skrip shell, dijalankan di shell non-interaktif, non-login .
File yang akan dibaca bash saat diluncurkan tergantung pada jenis shell yang digunakan. Berikut ini adalah kutipan dari bagian INVOCATION dari man bash(penekanan tambang):
Ketika bash dipanggil sebagai shell login interaktif , atau sebagai shell non-interaktif dengan opsi --login, ia pertama kali membaca dan mengeksekusi perintah dari file / etc / profile , jika file itu ada. Setelah membaca file itu, ia mencari ~ / .bash_profile, ~ / .bash_login, dan ~ / .profile, dalam urutan itu , dan membaca serta mengeksekusi perintah dari yang pertama yang ada dan dapat dibaca. Opsi --noprofile dapat digunakan ketika shell mulai menghambat perilaku ini.
Ketika shell interaktif yang bukan shell login dimulai, bash membaca dan mengeksekusi perintah dari /etc/bash.bashrc dan ~ / .bashrc , jika file-file ini ada. Ini dapat dihambat dengan menggunakan opsi --norc. Opsi file --rcfile akan memaksa bash untuk membaca dan menjalankan perintah dari file alih-alih /etc/bash.bashrc dan ~ / .bashrc.
Itu adalah file inisialisasi. Anda juga memiliki /etc/environmenttempat Anda dapat mengatur variabel lingkungan global tapi itu dibaca daripada bersumber (perintah di dalamnya tidak dijalankan tetapi definisi variabel ditetapkan).
Sekarang, salam yang Anda lihat adalah sesuatu yang lain lagi. Itu diatur /etc/motddan ditampilkan melalui pam_motd. Sebagaimana dijelaskan dalam man motd:
Isi / etc / motd ditampilkan oleh pam_motd (8) setelah login berhasil tetapi tepat sebelum ia mengeksekusi shell login.
Singkatan "motd" adalah singkatan dari "message of the day", dan file ini secara tradisional digunakan untuk hal itu (ini membutuhkan ruang disk jauh lebih sedikit daripada email ke semua pengguna).
Pada Debian GNU / Linux, konten /run/motd.dynamic juga ditampilkan. File ini dihasilkan oleh /etc/init.d/motd saat boot.
Untuk menghapus pesan, cukup kosongkan /etc/motdfile dan pastikan tidak ada yang dihasilkan /etc/init.d/motdjika ada.
Bagaimanapun, berdasarkan pada output yang Anda tunjukkan, Anda tampaknya masuk melalui sshyang berarti Anda menjalankan shell login interaktif , lihat di atas untuk apa artinya. Jadi, secara ringkas, hal-hal yang Anda pedulikan yang bersumber saat Anda masuk adalah (dan dalam urutan ini):
- Daemon SSH, melalui
pam_motdmodul perpustakaan PAM, menampilkan konten /etc/motd. Melalui pam_envmodul, ini mengatur variabel lingkungan dari /etc/environmentdan ~/.pam_environment.
- Shell login dimulai, dan file-file berikut dibaca secara berurutan:
/etc/profile
/etc/bash.bashrc( /etc/profilesumber-sumber Ubuntu default /etc/bash.bashrc).
~/.bash_profile. File lain yang bisa dibaca di sini ( ~/.profiledan ~/.bash_login) diabaikan karena ~/.bash_profileada.
export SET_IN_ETC_PROFILE=yesdi/etc/profile,export SET_IN_HOME_ZSHRC=yesdi~/.zhshrc(saya pengguna zsh), dll ... Kemudian reboot dan bagusenv|grep SET_INakan memberitahu Anda semua cerita. Untuk melihat variabel mana yang dilihat oleh aplikasi desktop (yang Anda luncurkan dari dasbor atau WM, tanpa menggunakan terminal), lihat askubuntu.com/a/356973/16395