Logging ke mesin Linux yang menjalankan Bash menyebabkan file tertentu terbaca. Mereka mengonfigurasi lingkungan shell Anda. Tapi file mana yang dibaca, dan kapan, bisa membingungkan. Inilah yang sebenarnya terjadi.
Berbagai Jenis Shell
Lingkungan yang Anda dapatkan saat meluncurkan shell ditentukan oleh setelan yang disimpan dalam file konfigurasi atau profil. Ini menyimpan informasi yang menetapkan hal-hal seperti warna teks Anda, prompt perintah Anda, alias, dan jalur yang dicari untuk file yang dapat dieksekusi saat Anda mengetikkan nama program.
Ada sejumlah file berbeda—di lokasi berbeda dalam file sistem—tempat pengaturan ini disimpan. Tetapi sebelum kita melihat file mana yang dibaca saat Anda meluncurkan shell, kita harus jelas tentang jenis shell yang Anda gunakan.
A shell login adalah shell yang Anda masuk ke. Saat Anda mem-boot komputer Anda dan masuk, di bawah lingkungan desktop grafis Anda ada shell login. Jika Anda terhubung ke komputer lain melalui koneksi SSH, Anda juga akan masuk ke shell login.
Jenis shell yang Anda dapatkan saat membuka jendela terminal adalah shell non-login. Anda tidak perlu mengautentikasi untuk meluncurkan shell saat Anda sudah login. Shell login dan non-login adalah shell interaktif. Anda menggunakannya dengan mengetik instruksi, menekan tombol "Enter", dan membaca tanggapan di layar.
Ada juga shell non-interaktif. Ini adalah jenis shell yang diluncurkan saat skrip dieksekusi. Script diluncurkan di shell baru. Shebang#!/bin/bash di bagian atas skrip menentukan shell mana yang harus digunakan.
#!/bin/bash
echo -e "Hello, World!n"
Script ini akan dijalankan di Bash non-interaktif kerang. Perhatikan bahwa meskipun shell non-interaktif, skrip itu sendiri bisa. Skrip ini dicetak ke jendela terminal, dan dapat dengan mudah menerima input pengguna.
Non-Interactive Shells
Kerang non-interaktif tidak membaca file profil apa pun saat diluncurkan. Mereka memang mewarisi variabel lingkungan, tetapi mereka tidak akan tahu apa-apa tentang alias, misalnya, apakah mereka didefinisikan di baris perintah atau di file konfigurasi.
Anda dapat menguji apakah shell interaktif atau tidak dengan melihat opsi yang diteruskan sebagai parameter baris perintah. Jika ada "i" di opsi, shell bersifat interaktif. Parameter khusus Bash$- berisi parameter baris perintah untuk shell.
[[ $- == *i* ]] && echo `Interactive` || echo `Non-interactive`
Mari kita buat alias bernama xc yang artinya “kucing”. Kami juga akan memeriksa apakah kami memiliki variabel $PATH set.
alias xc=catecho $PATH
Kami akan mencoba mengakses keduanya dari dalam skrip kecil ini. Salin skrip ini ke editor dan simpan sebagai “int.sh.”
#!/bin/bash xc ~/text.dat echo "Variable=$PATH"
Kita perlu menggunakan chmod untuk membuat skrip dapat dieksekusi.
chmod +x int.sh
Mari kita jalankan skrip:
./int.sh
Dalam shell non-interaktifnya, skrip kita tidak dapat menggunakan alias, tetapi dapat menggunakan variabel lingkungan. Shell interaktif lebih menarik dalam penggunaan file profil dan konfigurasi.
Shell Login Interaktif
Ada dua jenis shell login interaktif. Salah satunya adalah shell yang memungkinkan Anda masuk ke komputer Anda. Di desktop, ini biasanya shell yang mendasari lingkungan desktop Anda. Apakah Anda menggunakan lingkungan desktop berjendela atau ubin, sesuatu harus mengautentikasi Anda dengan sistem Linux dan mengizinkan Anda untuk masuk.
On server tanpa lingkungan desktop yang diinstal, Anda masuk langsung ke shell interaktif. Anda dapat melakukan hal yang sama pada komputer desktop jika Anda keluar dari lingkungan desktop dan mengakses terminal. Di GNOME Anda dapat melakukan ini dengan kombinasi tombol Ctrl+Alt+F3. Untuk kembali ke sesi GNOME Anda, tekan kombinasi tombol Ctrl+Alt+F2. Shell yang Anda sambungkan melalui SSH juga merupakan shell login.
File profil dan konfigurasi yang dipanggil dapat diatur menggunakan variabel lingkungan, sehingga dapat bervariasi dari distribusi ke distribusi. Selain itu, tidak semua file digunakan oleh setiap distribusi. Dalam instalasi Bash generik, shell login interaktif membaca file “/etc/profile”. Ini memegang opsi konfigurasi shell di seluruh sistem. Jika ada, file ini juga membaca file seperti “/etc/bash.bashrc” dan “/usr/share/bash-completion/bash_completion”.
Bash kemudian mencari file “~/.bash_profile”. Jika tidak ada, Bash mencari file “~/.bash_login”. Jika file itu tidak ada, Bash mencoba mencari file ".profile". Setelah salah satu file ini ditemukan dan dibaca, Bash berhenti mencari. Jadi dalam kebanyakan kasus, "~/.profile" tidak mungkin dibaca sama sekali.
Seringkali, Anda akan menemukan sesuatu seperti ini di "~/.bash_profile" Anda atau, sebagai semacam backstop, di file "~/.bash_profile" Anda. profile” file:
# jika menjalankan bash
if [ -n "$BASH_VERSION" ];
then
# sertakan .bashrc jika ada
if [ -f "$HOME/.bashrc" ];
then . "$HOME/.bashrc"
fi
fi
Ini memeriksa apakah shell aktif adalah Bash. Jika ya, ia akan mencari file "~/.bashrc" dan membacanya jika ditemukan.
Interactive Non-Login Shells
A Bash shell non-login interaktif membaca "/etc/bash.bashrc" dan kemudian membaca "~/.bashrc". file .bashrc". Hal ini memungkinkan Bash untuk memiliki pengaturan di seluruh sistem dan khusus pengguna.
Perilaku ini dapat diubah dengan tanda kompilasi ketika Bash dikompilasi, tetapi akan menjadi keadaan yang langka dan aneh untuk menemukan versi Bash yang tidak sumber dan membaca “/etc/bash.bashrc” file.
Setiap kali Anda membuka jendela terminal di desktop Anda, kedua file ini digunakan untuk mengkonfigurasi lingkungan shell non-login interaktif itu. Hal yang sama terjadi untuk shell yang diluncurkan oleh aplikasi, seperti jendela terminal di Geany IDE.
Di Mana Anda Harus Meletakkan Kode Konfigurasi Anda?
Tempat terbaik untuk meletakkan kode kustomisasi pribadi Anda adalah di file “~/.bashrc” Anda. Alias dan fungsi shell Anda dapat didefinisikan di “~/.bashrc”, dan mereka akan dibaca dan tersedia untuk Anda di semua shell interaktif.
Jika distribusi Anda tidak membaca “~/.bashrc” Anda di shell login , dan Anda menginginkannya, tambahkan kode ini ke file “~/.bash_profile” Anda.
# jika menjalankan bash if [ -n "$BASH_VERSION" ]; lalu # sertakan .bashrc jika ada if [ -f "$HOME/.bashrc" ]; kemudian . "$HOME/.bashrc" fi fi
Didesain Moduler
Jika Anda memiliki banyak alias, atau Anda ingin menggunakan alias yang sama di sejumlah mesin, yang terbaik adalah menyimpannya di file mereka sendiri, dan sama dengan fungsi shell Anda . Anda dapat memanggil file-file tersebut dari file “~/.bashrc” Anda.
Di komputer uji kami, alias disimpan dalam file bernama “.bash_aliases” dan file bernama “.bash_functions” menyimpan fungsi shell.
Anda dapat membacanya dari dalam file “~/.bashrc” Anda seperti ini:
# read in my alias
if [ -f ~/.bash_aliases ];
then . ~/.bash_aliases
fi
# baca di shell saya berfungsi
if [ -f ~/.bash_functions ];
then . ~/.bash_functions
fi
Ini memungkinkan Anda dengan mudah memindahkan alias dan fungsi antar komputer dengan mudah. Anda hanya perlu 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. definisi dari "~/.bashrc" di satu komputer ke file "~/.bashrc" di masing-masing komputer lain. Ini juga lebih baik daripada menyalin seluruh file “~/.bashrc” antar komputer, terutama jika mereka menjalankan Bash pada distribusi yang berbeda.
Kesimpulan
File yang benar-benar perlu Anda ketahui adalah:
/etc/profile: Pengaturan konfigurasi seluruh sistem. Digunakan oleh shell login.~/.bash_profile: Digunakan untuk menyimpan pengaturan untuk pengguna individu. Digunakan oleh shell login.~/.bashrc: Digunakan untuk menyimpan pengaturan untuk pengguna individu. Digunakan oleh shell non-login interaktif. Mungkin juga dipanggil dari file “~/.bash_profile” atau “~/.profile” Anda untuk login shells.
Salah satu metode mudah adalah dengan menempatkan pengaturan pribadi Anda di “~/.bashrc”, dan pastikan “~./bash_profile” Anda ” memanggil file “~/.bashrc” Anda. Itu berarti pengaturan pribadi Anda disimpan dalam satu file tunggal. Anda akan mendapatkan lingkungan shell yang konsisten di seluruh shell login dan non-login. Menggabungkan ini dengan menyimpan alias dan fungsi shell Anda dalam file non-sistem adalah solusi yang rapi dan kuat.
Itulah berita seputar
Apa Perbedaan Antara .bashrc dan .profile di Linux?, semoga bermanfaat.
Disadur dari HowToGeek.com.