Apa itu file .bashrc?

101

Buka shell ketika mulai membaca .bashrcfile dan jalankan perintah yang tertulis di dalamnya. Apa file ini dan apa fungsinya?

nanas
sumber
2
Coba buka file dalam editor teks - itu dalam teks biasa.
Will Bickford

Jawaban:

68

Sebenarnya, secara bashkhusus yang berbunyi .bashrc(dan /etc/bash.bashrc). Ada banyak cangkang yang berbeda.

Halaman bash man (oleh Brian Fox dan Chet Ramey; juga halaman info "Bash Startup Files" ) adalah referensi resmi:

Ketika shell interaktif yang bukan shell login dimulai, bash membaca dan mengeksekusi perintah dari ~/.bashrc, jika file itu ada. Ini dapat dihambat dengan menggunakan --norcopsi. The --rcfilepilihan file akan memaksa bash untuk membaca dan menjalankan perintah dari file bukan ~/.bashrc.

Ketika bash dimulai secara non-interaktif, untuk menjalankan skrip shell, misalnya, ia mencari variabel BASH_ENVdi lingkungan, memperluas nilainya jika muncul di sana, dan menggunakan nilai yang diperluas sebagai nama file untuk dibaca dan dieksekusi. Bash berperilaku seolah-olah perintah berikut dijalankan:

if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi  

tetapi nilai PATHvariabel tidak digunakan untuk mencari nama file.

File ini hanya perintah shell. Biasanya digunakan untuk mengubah prompt, mengatur variabel lingkungan, dan mendefinisikan prosedur shell. Secara tradisional, file .profiledigunakan untuk tujuan ini, tetapi bashmemiliki banyak ekstensi yang membutuhkan file startup sendiri untuk pengguna yang ingin menempatkan bashism dalam file startup.

" Bukan shell login " berarti hal-hal seperti peluncuran skrip dan biasanya terminal windows dimulai oleh manajer jendela. Kadang-kadang saya mengatur sistem * nix untuk dimiliki .bashrcdan BASH_ENVsumbernya saja .profile. Selama Anda tidak keluar dari perintah shell POSIX maka Anda akan mendapatkan inisialisasi yang sama di setiap shell.

Ini sangat berharga ketika shbenar-benar bash, yang terkadang terjadi. Untuk melakukan ini gunakan:

. .profile

Salah satu alasan ini semua sangat kompleks adalah karena kadang-kadang orang memasukkan hal-hal yang menghasilkan output ke file startup shell, atau mereka tanpa syarat mengatur prompt. Ini menyebabkan banyak masalah saat menjalankan program shell dan perintah backtick dalam bahasa, belum lagi system(3)dari program C. Cara bashmemulai dirancang, saya pikir, memiliki satu file di mana pengaturan output dan prompt OK dan satu file di mana tidak. Secara tradisional, tes run-time akan dilakukan untuk membedakan interaktivitas, misalnya, memeriksa untuk melihat apakah prompt diatur.

DigitalRoss
sumber
Jawaban yang bagus. Hanya beberapa kutipan: File ini hanya perintah shell. Biasanya digunakan untuk mengubah prompt, mengatur variabel lingkungan, dan mendefinisikan prosedur shell.
smwikipedia
2
Adakah yang tahu apa arti bagian rc dari .bashrc / .zshrc?
WORMSS
4
@WORMSS: Pertanyaan bagus! Anda bukan satu-satunya yang bertanya-tanya tentang itu .
Caleb Xu
Mungkin rc berarti konfigurasi runtime.
Mike Diehn
12

Ketika Bash dimulai, ia mengeksekusi perintah dalam berbagai skrip yang berbeda.

Ketika Bash dipanggil sebagai shell login interaktif, 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.

Ketika shell login keluar, Bash membaca dan mengeksekusi perintah dari file ~ / .bash_logout, jika ada.

Ketika shell interaktif yang bukan shell login dimulai, Bash membaca dan mengeksekusi perintah dari ~ / .bashrc, jika file itu ada. Ini dapat dihambat dengan menggunakan opsi --norc. Opsi file --rcfile akan memaksa Bash untuk membaca dan menjalankan perintah dari file daripada ~ / .bashrc.

http://en.wikipedia.org/wiki/Bash_(Unix_shell)

Berikut beberapa trik dan kiatnya:

http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html

Mari kita coba atur prompt sehingga dapat menampilkan tanggal dan nama host hari ini:

PS1="\d \h $ "
randomx
sumber
1
Kenapa .profilesetelah .bash_profile? Ada logika?
Pacerier
10

Itu harus berisi berbagai perintah "inisialisasi" untuk shell Anda, misalnya:

  • Menciptakan alias yang bermanfaat (misalnya alias ll='ls -l').
  • Menambahkan lebih banyak direktori ke PATH.
  • Mengatur variabel lingkungan baru.
Roman Zeyde
sumber
Apa gunanya alias?
nanas
2
@pineapple: Sebuah alias adalah cara untuk menjalankan perintah, yang mungkin panjang, dengan yang lebih pendek. Misalnya, alias ll='ls -l'memungkinkan Anda mengetik lluntuk menjalankan ls -lperintah.
Wuffers