Apa perbedaan antara .bashrc dan .profile di Linux?

Fatmawati Ahmad zaenuri / Shutterstock.com

Saat Anda masuk ke komputer Linux yang menjalankan Bash, beberapa file dibaca. Anda dapat mengonfigurasi lingkungan shell Anda sendiri. Tapi file mana yang dibaca dan kapan bisa membingungkan. Inilah yang sebenarnya terjadi.

Berbagai jenis rudal

Lingkungan yang Anda dapatkan saat memulai shell ditentukan oleh pengaturan di config atau Profil pribadi file. Ini berisi informasi yang menentukan hal-hal seperti warna teks, prompt perintah, alias, dan jalur untuk menemukan file yang dapat dieksekusi saat Anda mengetikkan nama program.

Ada sejumlah file berbeda – di tempat berbeda dalam sistem file – yang menyimpan pengaturan ini. Tetapi sebelum kita melihat file apa yang dibaca saat shell dimulai, kita harus jelas tentang jenis shell yang Anda gunakan.

Shell login adalah shell yang Anda masuki. Saat Anda memulai komputer dan masuk, ada shell masuk di dalam lingkungan desktop grafis. Jika Anda terhubung ke komputer lain menggunakan koneksi SSH, sambungkan juga ke shell login.

Jenis shell yang Anda dapatkan saat membuka jendela terminal adalah shell yang tidak terdaftar. Anda tidak perlu otentikasi untuk memulai shell jika Anda sudah masuk. Shell login dan non-login adalah shell interaktif. Anda dapat menggunakannya dengan mengetik instruksi, menekan Enter, dan membaca jawaban yang muncul di layar.

Ada juga cangkang non-reaktif. Ini adalah jenis shell yang ditembakkan saat skrip dijalankan. Script dimulai di sampul baru. hal #!/bin/bash Di awal skrip, tentukan shell mana yang akan digunakan.

#!/bin/bash

echo -e "Hello, World!n"

Skrip ini berjalan di shell bash non-interaktif. Perhatikan bahwa meskipun sampulnya non-interaktif, teks itu sendiri tidak bisa interaktif. Skrip ini ditampilkan di jendela terminal dan juga dapat menerima input pengguna.

terkait: 9 contoh skrip bash untuk Anda mulai menggunakan Linux

Cangkang non-reaktif

Shell non-interaktif tidak membaca file konfigurasi saat startup. Mereka mewarisi variabel lingkungan tetapi tidak tahu tentang alias, misalnya jika ditentukan pada baris perintah atau di file konfigurasi.

Anda dapat menguji apakah shell itu interaktif atau tidak dengan memeriksa opsi yang diberikan kepadanya sebagai parameter baris perintah. Jika ada “i” di opsi, shell bersifat interaktif. bash parameter pribadi $- Berisi parameter baris perintah untuk shell saat ini.

[[ $- == *i* ]] && echo 'Interactive' || echo 'Non-interactive'

Mari kita buat alias bernama xc Artinya “kucing”. Kami juga akan memeriksa apakah kami memilikinya $PATH himpunan variabel.

alias xc=cat
echo $PATH

Kami akan mencoba mengakses keduanya dari skrip kecil ini. Salin skrip ini ke editor dan simpan sebagai int.sh.

#!/bin/bash

xc ~/text.dat
echo "Variable=$PATH"

Kita harus menggunakan chmod Untuk membuat teks dapat dieksekusi.

chmod +x int.sh

Gunakan chmod untuk membuat skrip dapat dieksekusi

Mari kita jalankan skrip kita:

./int.sh

Jalankan skrip yang tidak dapat mengakses alias tetapi dapat mengakses variabel lingkungan yang diwarisi

Di shell non-interaktifnya, skrip kami tidak dapat menggunakan alias, tetapi dapat menggunakan variabel lingkungan. Shell interaktif lebih menarik dalam penggunaan profil dan konfigurasinya.

terkait: Cara mengatur variabel lingkungan di Bash di Linux

Shell login interaktif

Ada dua shell login interaktif. Salah satunya adalah shell, yang dapat Anda gunakan untuk login ke komputer Anda. Pada komputer desktop, ini biasanya shell yang mendasari lingkungan desktop. Baik Anda menggunakan lingkungan desktop berjendela atau ubin, sesuatu perlu mengautentikasi Anda dengan Linux dan membiarkan Anda masuk.

Masuk langsung ke shell interaktif di server tanpa menginstal lingkungan desktop. Anda dapat melakukan hal yang sama pada komputer desktop dengan keluar dari lingkungan desktop dan masuk ke terminal. Di GNOME, Anda dapat melakukan ini dengan pintasan keyboard Ctrl + Alt + F3. Untuk kembali ke sesi GNOME, tekan Ctrl + Alt + F2. Shell yang Anda sambungkan melalui SSH juga merupakan shell login.

Profil dan konfigurasi yang dipanggil dapat diatur melalui variabel lingkungan, sehingga dapat bervariasi dari distribusi ke distribusi. Juga, tidak semua file digunakan oleh semua distribusi. Dalam instalasi bash global, shell login interaktif membaca file /etc/profile. Ini berisi opsi konfigurasi shell di tingkat sistem. Jika ada, file ini juga membaca file seperti /etc/bash.bashrc dan /usr/share/bash-complete/bash_completion.

Bash kemudian akan mencari file “~/.bash_profile”. Jika tidak ada, Bash mencari file “~/.bash_login”. Jika file ini tidak ada, Bash akan mencoba mencari file “.profile”. Setelah menemukan dan membaca salah satu file ini, Bash berhenti mencari. Oleh karena itu, dalam banyak kasus, membaca profil ~/ tidak mungkin.

di ~/.bash_profile Anda, atau sebagai semacam dukungan di ~/.bash_profile Anda, atau sebagai semacam dukungan di ~/.bash_profile Anda. , Anda akan sering menemukan sesuatu seperti ini:

# if running bash
if [ -n "$BASH_VERSION" ]; then
  # include .bashrc if it exists
  if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
  fi
fi

Ini memeriksa apakah shell aktif adalah bash. Jika demikian, ia akan mencari file “~/.bashrc” dan membacanya jika ditemukan.

Kerang interaktif tanpa registrasi

Shell interaktif tanpa login membaca /etc/bash.bashrc dan kemudian membaca file ~/.bashrc. Ini memungkinkan Bash untuk mendapatkan pengaturan seluruh sistem dan khusus pengguna.

Perilaku ini dapat diubah menggunakan tag kompiler saat mengkompilasi bash, tetapi akan aneh dan jarang menemukan salinan bash yang tidak menunjuk dan membaca file /etc/bash.bashrc.

Saat Anda membuka jendela terminal di desktop, kedua file ini digunakan untuk menyiapkan lingkungan untuk shell interaktif ini tanpa masuk. Hal yang sama berlaku untuk shell yang dimulai oleh aplikasi, seperti jendela B. Terminal di Geany IDE.

Di mana Anda memasukkan kode konfigurasi Anda?

Tempat terbaik untuk ikon personalisasi adalah di file ~/.bashrc. Alias ​​​​dan fungsi Anda di shell dapat didefinisikan di “~/.bashrc” dan dapat dibaca dan tersedia di semua shell interaktif.

Jika distribusi Anda tidak membaca “~/.bashrc” di shell login Anda dan Anda menginginkannya, tambahkan kode ini ke file “~/.bash_profile” Anda.

# if running bash
if [ -n "$BASH_VERSION" ]; then
  # include .bashrc if it exists
  if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
  fi
fi

Modnya terbaik

Jika Anda memiliki beberapa alias, atau berencana untuk menggunakan alias yang sama di beberapa mesin, sebaiknya simpan dalam file mereka sendiri, hal yang sama berlaku untuk fungsi shell Anda. Anda dapat mengakses file-file ini dari file ~/.bashrc Anda.

Di mesin uji kami, alias disimpan dalam file bernama .bash_aliases, dan file bernama .bash_functions berisi fungsi shell.

Anda dapat membacanya di file “~/.bashrc” sebagai berikut:

# read in my aliases
if [ -f ~/.bash_aliases ]; then
  . ~/.bash_aliases
fi

# read in my shell functions
if [ -f ~/.bash_functions ]; then
  . ~/.bash_functions
fi

Ini memungkinkan Anda untuk dengan mudah mentransfer alias dan fungsi antar komputer. Yang harus Anda lakukan adalah menambahkan baris di atas ke file ~/.bashrc di setiap komputer dan menyalin file yang berisi alias dan fungsi shell ke direktori home Anda di setiap komputer.

Ini berarti Anda tidak perlu menyalin semua definisi dari file ~/.bashrc di satu komputer ke file ~/.bashrc di setiap komputer lainnya. Ini juga lebih baik daripada menyalin seluruh file “~/.bashrc” antar komputer, terutama jika mereka menjalankan bash di distro yang berbeda.

kesimpulan

File yang benar-benar perlu Anda ketahui adalah:

  • /etc/profil: Pengaturan konfigurasi seluruh sistem. Digunakan oleh shell login.
  • ~/.bash_profile: Digunakan untuk menyimpan pengaturan untuk pengguna individu. Digunakan oleh shell login.
  • ~/: Digunakan untuk menyimpan pengaturan untuk pengguna individu. Digunakan oleh Cangkang Reaktif Tidak Terdaftar. Itu juga dapat dipanggil dari file Anda ~/.bash_profile atau ~/.profile untuk shell login.

Cara mudah adalah dengan meletakkan pengaturan pribadi Anda di ~/.bashrc dan pastikan ~.bashrc . /bash_profile Anda memanggil ~/.bashrc. Ini berarti bahwa pengaturan pribadi Anda disimpan dalam satu file. Anda mendapatkan lingkungan shell yang konsisten untuk shell login dan non-login. Menggabungkan ini dengan menyimpan alias dan fungsi shell dalam file non-sistem adalah solusi yang rapi dan kuat.

Baca Juga!

Semua yang Anda butuhkan untuk menggunakan PC dengan TV

Violetkaipa / Shutterstock.com TV Anda kemungkinan akan memiliki layar yang lebih besar daripada laptop atau …