pengantar
File konfigurasi bash
Bash memiliki banyak file konfigurasi (alias startup), menggunakan file-file ini untuk mengatur lingkungan tertentu untuk setiap pengguna.
Beberapa file-file ini terletak di /etc
, salah satunya yang saya ketahui adalah /etc/profile
, ini adalah file konfigurasi global dan pengaturannya akan diterapkan ke semua sesi, yang lain adalah /etc/bash.bashrc
; Kami tidak perlu menangani file-file ini karena lokasinya sudah terlindungi dan hanya root yang berhak mengeditnya.
Direktori yang sangat penting yang dapat banyak membantu kami adalah /etc/skel
:; Setiap kali Anda membuat pengguna baru dengan direktori home, file dalam direktori ini akan digunakan sebagai kerangka untuk direktori home pengguna baru Anda.
ls -a /etc/skel
.bash_logout .bashrc .profile
Kami juga dapat menggunakan dpkg
untuk menemukan tentang file-file ini:
$ dpkg -L bash | grep etc
/etc/skel/.bashrc
/etc/skel/.bash_logout
/etc/skel/.profile
/etc/bash.bashrc
kita dapat melihat bahwa semua ini diinstal oleh bash
.
Cara kerja di bash
Alias atau fungsi dapat diatur di salah satu file ini, jadi mari kita lihat bagaimana file-file ini akan digunakan oleh bash
.
Dari bash
halaman manual:
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, tampaknya untuk ~/.bash_profile
, ~/.bash_login
dan ~/.profile
, agar, dan membaca dan exe-cutes perintah dari yang pertama yang ada dan dapat dibaca.
jadi urutannya adalah: ~/.bash_profile > ~/.bash_login > ~/.profile
Ketika shell login keluar, bash membaca dan mengeksekusi perintah dari file ~ / .bash_logout, jika ada.
yang ini akan dijalankan setiap kali kita keluar dari shell login, saya tidak bisa melihat bagaimana yang satu ini memiliki efek pada situasi kita.
Ketika shell interaktif yang bukan shell login dimulai, bash membaca dan mengeksekusi perintah dari /etc/bash.bashrc dan ~ / .bashrc, jika file-file ini ada.
jadi yang paling penting adalah ~/.bashrc
, karena hampir 90% shell bash yang kita jalankan berada dalam mode interaktif dan tanpa login. dan jika kita melihat file ini kita dapat melihat bahwa ia akan mencari file lain bernama ~/.bash_aliases
, jika ia dapat menemukannya, maka itu akan source
file itu juga.
Mulailah merawat file-file ini
Pertama-tama kita harus pindah ~/.profile
ke ~/.bash_profile
sebaliknya tidak masalah jika kita melindungi ~/.profile
file, seseorang dapat membuat ~/.bash_profile
dan itu akan menimpa konfigurasi kita, jadi:
mv ~/.profile ~/.bash_profile
Setelah itu jika Anda tidak menggunakan ~/.bash_aliases
file kemudian membuat itu, lagi seperti di atas, seseorang dapat dengan mudah membuat file ini dan ada kemungkinan bahwa ia dapat mengubah atau alias di dalamnya.
touch ~/.bash_aliases
Terakhir digunakan chattr
untuk melindungi file-file ini dari pengeditan dan penghapusan.
Dari chattr
halaman manual:
File dengan atribut 'i' tidak dapat dimodifikasi: tidak dapat dihapus atau diganti namanya, tidak ada tautan yang dapat dibuat ke file ini dan tidak ada data yang dapat ditulis ke file. Hanya superuser atau proses yang memiliki kemampuan CAP_LINUX_IMMUTABLE yang dapat mengatur atau menghapus atribut ini.
sudo chattr +i ~/.bash_profile ~/.bashrc ~/.bash_aliases
Kami selesai, Jangan lupa bahwa setiap kali Anda ingin mengedit file-file ini, Anda harus terlebih dahulu menghapus -i
atribut.
Setel ulang semuanya tanpa menutup / membuka kembali terminal
Solusi lain adalah, membuat file:
sudo touch /usr/local/bin/reload_aliases
Letakkan alias Anda di sana:
unalias -a
alias x='...'
alias b='...'
Pastikan tidak ada yang bisa menulis ke file itu:
sudo chmod a=r,x /usr/local/bin/reload_aliases
Sekarang setiap kali Anda ingin memuat ulang semua yang berjalan:
/usr/local/bin/reload_aliases
Kembalikan
Dan jika Anda berubah pikiran:
sudo chattr -i ~/.bash_profile ~/.bashrc ~/.bash_aliases
mv ~/.bash_profile ~/.profile
rm ~/.bash_aliases # if you don't use it