.Bashrc dosyasi nedir?


100

Unix, .bashrcdosyayı başlatırken okur ve içinde yazılı komutları çalıştırır. Bu dosya nedir ve ne yürütür?


2
Dosyayı bir metin düzenleyicide açmayı deneyin - düz metindir.
Bickford

Yanıtlar:


66

Aslında, bashözellikle okur .bashrc(ve /etc/bash.bashrc). Çok farklı mermiler var.

Bash adam sayfası (Brian Fox ve Chet Ramey tarafından; ayrıca bilgi sayfası "Bash Başlatma Dosyaları" ) yetkili referanstır:

Oturum açma kabuğu olmayan etkileşimli bir kabuk başlatıldığında, bash ~/.bashrcbu dosya varsa, komutları okur ve yürütür . Bu --norcseçenek kullanılarak engellenebilir . --rcfileDosya seçeneği okuyup yerine dosyadan komutları yürütmek için bash zorlar ~/.bashrc.

Bash etkileşimli olmayan bir şekilde başlatıldığında, bir kabuk betiğini çalıştırmak, örneğin, BASH_ENVortamdaki değişkeni arar , orada görünürse değerini artırır ve genişletilmiş değeri okumak ve yürütmek için bir dosyanın adı olarak kullanır. Bash, aşağıdaki komut yürütülmüş gibi davranır:

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

ancak PATHdeğişkenin değeri dosya adını aramak için kullanılmaz.

Dosya sadece kabuk komutlarıdır. Genellikle istemleri değiştirmek, ortam değişkenlerini ayarlamak ve kabuk prosedürlerini tanımlamak için kullanılır. Geleneksel olarak, dosya .profilebu amaç için kullanılır, ancak başlangıç ​​dosyalarına temelbash oluşturmak isteyen kullanıcılar için kendi başlangıç ​​dosyasına ihtiyaç duyacak kadar uzantıya sahiptir.

" Giriş kabuğu değil ", komut dosyası başlatması ve genellikle pencere yöneticileri tarafından başlatılan terminal pencereleri gibi şeyler anlamına gelir. Bazen * nix sistemlerini kurdum .bashrcve BASH_ENVsadece kaynak kullandım .profile. POSIX kabuk komutlarının dışında kalmadığınız sürece, aynı başlatmayı herhangi bir kabukta alırsınız.

shGerçekten de bash, bazen olduğu zaman , özellikle değerlidir . Bu kullanımı yapmak için:

. .profile

Bunların bu kadar karmaşık olmasının bir nedeni, bazen insanların çıktı üreten şeyleri kabuk başlangıç ​​dosyalarına koymaları veya koşulsuz olarak bilgi istemleri oluşturmalarıdır. Bu system(3), C programlarından bahsetmek yerine, kabuk programları ve dillerdeki backtick komutlarını çalıştırırken çok fazla soruna neden olur . Başlangıç ​​şekli bash, çıktı ve bilgi istemi ayarının tamam olduğu bir dosyaya ve olmadığı bir dosyaya sahip olmak için tasarlanmıştır. Geleneksel olarak, etkileşimin ayırt edilmesi için bir çalışma zamanı testi yapılır, örneğin komut isteminin ayarlanıp ayarlanmadığını kontrol edin.


İyi cevap. Sadece bir miktar teklif: Dosya sadece kabuk komutlarıdır. Genellikle istemleri değiştirmek, ortam değişkenlerini ayarlamak ve kabuk prosedürlerini tanımlamak için kullanılır.
smwikipedia

2
.Bashrc / .zshrc dosyasının rc bölümünün ne anlama geldiğini bilen var mı?
WORMSS

4
@ WORMSS: Güzel soru! Bunu merak eden sadece sen değilsin .
Caleb Xu,

Belki rc çalışma zamanı konfigürasyonu demektir.
Mike Diehn

12

Bash başladığında, komutları çeşitli komut dosyalarında yürütür.

Bash etkileşimli bir giriş kabuğu olarak çağrıldığında, ilk önce / etc / profile dosyasındaki komutları okur ve çalıştırır. Bu dosyayı okuduktan sonra, bu sırayla ~ / .bash_profile, ~ / .bash_login ve ~ / .profile ifadelerini arar ve var olan ve okunabilen ilk komuttan komutları okur ve yürütür.

Bir giriş kabuğu çıktığında Bash, varsa ~ / .bash_logout dosyasındaki komutları okur ve yürütür.

Oturum açma kabuğu olmayan etkileşimli bir kabuk başlatıldığında, Bash eğer varsa, ~ / .bashrc komutlarını okur ve yürütür. Bu --norc seçeneği kullanılarak engellenebilir. --Rcfile dosyası seçeneği, Bash'i ~ / .bashrc yerine dosyadan komutları okuması ve yürütmesi için zorlar.

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

İşte bazı püf noktaları ve ipuçları:

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

İstemi, bugünün tarihini ve ana bilgisayar adını görüntüleyebilecek şekilde ayarlamaya çalışalım:

PS1="\d \h $ "

1
Neden .profilesonra .bash_profile? Herhangi bir mantık?
Pacerier

10

Kabuğunuz için çeşitli "başlatma" komutları içermelidir, örneğin:

  • Yararlı takma adlar oluşturma (örneğin alias ll='ls -l').
  • PATH'a daha fazla dizin eklemek.
  • Yeni ortam değişkenlerini ayarlamak.

Takma adın kullanımı nedir?
ananas

2
@ pineapple: Takma ad, daha kısa olan bir komutu çalıştırmanın bir yoludur. Örneğin, diğer ad , komutu yürütmek için ll='ls -l'yazmanıza izin verir . llls -l
Wuffers
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.