.bashrc yeni terminal açılırken çalıştırılmadı


84

Ubuntu 12.04'te yeni bir terminal penceresi açtığımda .bashrc'deki kod çalıştırılmıyor. Bir .bash_aliases dosyası oluştururken bunu fark ettim. Takma adlar yeni bir terminal açtığımda görünmedi. Ancak source .bashrctakma adlar göründüğünde ortaya çıktı.

.bashrc ne zaman yeni bir terminal penceresi açsam çalıştırılmalı?

Bunu nasıl yapabilirim?


Bunun yerine .profile dosyasını deneyin.
jippie

4
@jippie Hayır, .profilebir yerde yanlış bir yapılandırma olmadığı sürece, yeni bir terminal açtığınızda, giriş anında okunur. Selah: Varsayılan konfigürasyondaki herhangi bir şeyi değiştirdiniz mi? Lütfen ps -o command $$ $PPIDbir terminalde çalıştırın ve çıktıyı kopyalayıp yapıştırın.
Gilles,

1
Olumlu emin olmak için, .bashrcev klasörüne koyuyorsun , değil mi?
Jjed

Kontrol etmek isteyebilirsin echo $SHELL. Bu bana oldu ve kabuk bash yerine / bin / sh oldu. / Etc / passwd ve çalışmasını .bashrc dosyasında düzeltin.
Joe Flynn,

Yanıtlar:


128

Mutlaka çalıştırılmaz; Standardın en üstünde .bashrc bu yorumdur:

# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

Bash terminalini bir giriş kabuğu olarak çalıştırma seçeneğinin olduğuna inanıyorum. Ubuntu ile, gnome-terminali normalde bir giriş kabuğu olarak çalışmaz, bu nedenle .bashrc doğrudan çalıştırılmalıdır.

Giriş kabukları için (sanal terminaller gibi), normalde dosya ~/.profilesizde ya ~/.bash_profileda sizde olmadıkça çalıştırılır ~/.bash_login, ancak bunlar varsayılan olarak orada değildir. Varsayılan olarak, Ubuntu yalnızca .profile öğesini kullanır.

Standardın ~/.profileiçinde bu var:

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

Bu, eğer mevcutsa .bashrc dosyasını çalıştırır - ortamınızda $ BASH_VERSION olduğunu varsayalım. Bunu komut girerek kontrol edebilirsiniz echo $BASH_VERSIONve sürüm numarası hakkında bazı bilgiler göstermelidir - boş olmamalıdır.


4
Bu talimatları anladıktan sonra terminal uygulamama girdim -> profil tercihleri ​​-> Başlık ve Komut -> Çalıştır komutunu giriş kabuğu olarak kullandım. Bunu işaretlemedim. Yardım için teşekkürler.
Selah

.Profile (dolayısıyla .bashrc) yüklendiğinde / okunduğunda netleşebilir mi? Kullanıcılar masaüstü oturumlarına giriş yaptıklarında bu gerçekleşmiş gibi görünüyor. Bunun cevabı, yeni bir terminal / kabuk oturumu başlattığınızda ortaya çıkıyor "Giriş kabukları için (sanal terminaller gibi), normal olarak ~ / .profile dosyası çalıştırılıyor ..."
hedgehog

4
Bu edilir normalde yeni bir giriş kabuğu başlattığınızda (gerçekten masaüstü değil oturumu masaüstü oturumundan yeni bir giriş kabuğu çalıştırabilirsiniz çünkü) çalıştırın. Dediğim gibi, varsayılan olarak çalıştırılır, ancak oluşturduysanız ~/.bash_profileveya kullanmazsanız ~/.bash_login. Onay kutusunu işaretleyerek veya işaretini kaldırarak test edebilir Edit -> Profile Preferences -> Title and Command -> "Run command as a login shellve çıkıp terminali yeniden çalıştırabilirsiniz. Test etmek için bir .profile öğesinden yankı yazabilirsiniz.
Marty Fried

@Selah Yorumunuz daha çok gerçek cevaba yardımcı oldu;) yorumunuz için çok teşekkür ederiz!
Aleks

Dolayısıyla , sisteminizde yarattıysanız ~/.bash_profileveya ~/.bash_loginsisteminizde bulunduruyorsanız ve onları saklamak istiyorsanız, ancak yine de ~/.profileve oradan ~/.bashrcyürütülmesini istiyorsanız, onu kendinizden ~/.bash_profileveya ~/.bash_loginiçeren bir satırdan kaynaklayabilirsiniz source "$HOME/.profile". Giriş kabuğunda da ls'nin renkli çıktısını geri veriyor!
tanius

26

Benim durumumda, sadece .bashrcyükleyici hatları eksikti.bash_profile

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

Manuel olarak ekledim ve yeni giriş bilgilerimle çalıştı


3
.bash_profile? Ubuntu .profilevarsayılan olarak bir kullanır .bash_profile.
muru

ubuntu sunucusu sık sık toplamaz .bashrc ... yukarıda işe yarar ... cat .bash_profile [[-s "$ HOME / .bashrc"]] && kaynağı "$ HOME / .bashrc" # Varsayılanı yükle
Scott Stensland

Bu benim için çözdü! Ben eklendi pcreve bunu eklemek yerine bash profilini overwrote gibi görünüyor.
shapiro yaacov

7

.bash_profilebash kabuğu için yapılandırmayı tutar. Bir terminal açtığınızda, önce komutları okur ve çalıştırır ~/.bash_profile. Böylece .bash_profilekabuğu bashrc'ye göre ayarlamak için aşağıdakileri ekleyebilirsiniz .

. ~/.bashrc

Terminaliniz bir giriş kabuğu çalıştırmıyorsa (varsayılan olarak Ubuntu'da ~/.bash_profilebulunmaz ), okunmaz (ve varsayılan olarak Ubuntu'da
bulunmaz

5

Eğer $BASH_VERSIONayarlı değil, kullanmayı deneyin chshiçin kabuğun ayarlanması için komutu /bin/bash.

12.04 LTS ile benzer bir sorunum vardı ve yeni kullanıcı hesabının varsayılan kabuğun ayarlandığı ortaya çıktı /bin/sh, sorunun nedeni de bu oldu.


Sebep buydu!
mulya 24:15

1

.Profile içindeki yoruma göre

~ / .profile: oturum açma kabukları için komut yorumlayıcısı tarafından yürütülür.¬ 11 Bu dosya, ~ / .bash_profile veya ~ / .bash_login¬ 10 # varsa

Yani oraya gidersiniz, ya ~/.bash_profileda ~/.bash_login exists, yerine, onlar koşacaklar~/.profile

Eğer çalıştırmak istiyorsanız ~/.bashrcsadece satırı ekleyin source ~/.bashrciçindebash_profile


1
Ben de aynı sorunu yaşadım. Benim .bashrcbir yaratana kadar kaynaklı ediliyordu .bash_profiledosyayı. Böylece dosyama source ~/.bashrc satır hazırladım .bash_profile.
Lashae

0

Bunların hepsini atlamak yerine sadece gidin Edit -> Profile Preferences -> Title and Command -> "Run a custom command instead of my shell"ve Özel komut kutusuna yazın bashve kapatın. Terminali bir sonraki açışınızda, otomatik olarak bash de çalıştıracak.


Hangi GUI'den bahsediyorsunuz? cüce veya birlik
Nic Wanavit
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.