Bir terminal açarken neden ~ / .bash_profile kaynaklanmıyor?

138

Sorun

Ubuntu 11.04 Sanal Makinem var ve Java geliştirme ortamımı kurmak istedim. Aşağıdaki gibi yaptım

  1. sudo apt-get install openjdk-6-jdk
  2. Aşağıdaki girişleri ~ / .bash_profile

    olarak ekledik
    export JAVA_HOME=/usr/lib/jvm/java-6-openjdk
    
    export PATH=$PATH:$JAVA_HOME/bin
    
  3. Değişiklikleri kaydedin ve çıkın

  4. Bir terminali tekrar açın ve aşağıdakini yazın

    echo $JAVA_HOME   (blank)
    echo $PATH        (displayed, but not the JAVA_HOME value)
    
  5. JAVA_HOME'un ihracı ve PATH'a eklenmesi hiç yapılmadıysa, hiçbir şey olmadı.

Çözüm

~ / .bashrc adresine gitmem ve dosya sonuna doğru aşağıdaki girişi yapmam gerekiyordu

#Source bash_profile to set JAVA_HOME and add it to the PATH because for some reason is not being picked up
. ~/.bash_profile

Sorular

  1. Bunu neden yapmak zorundaydım? Bash_profile, bash_login veya profilinin yokluğunda bashc'den önce idam edildiğini düşündüm.
  2. Bu durumda terminalim oturum açma dışı kabuk muydu?
  3. Eğer öyleyse, terminalden sonra suya girip parola koymak neden yukarıda belirtilen ihracatı da belirlediğim profile sahip değil?
sordu Viriato 11.04.2012 18:27

5 cevap

182

~/.bash_profile , yalnızca etkileşimli giriş modunda başlatıldığında bash tarafından kaynaklanmaktadır. Bu genellikle yalnızca konsola giriş yaptığınızda ( Ctrl + Alt + F1 .. F6 ) veya ssh ile bağlantı.

Grafiksel olarak giriş yaptığınızda, ~/.profile , gnome-session'ı (veya kullandığınız masaüstü ortamını) başlatan komut dosyası tarafından özel olarak sağlanacaktır. Grafiksel olarak giriş yaptığınızda ~/.bash_profile hiç kaynak değil.

Bir terminali açtığınızda, terminal (giriş yapmayan) etkileşimli modda bash başlatır, bu da ~/.bashrc kaynağını oluşturacağı anlamına gelir.

Bu ortam değişkenlerini koymanız için doğru yer ~/.profile 'dir ve bir sonraki oturum açışınızda etkisi belirgin olmalıdır.

~/.bash_profile 'sının ~/.bashrc kaynağından alınması yanlış bir çözümdür. Etrafında başka bir yol olması gerekiyordu; ~/.bash_profile , ~/.bashrc kaynağını içermelidir.

Daha ayrıntılı bir açıklama için DotFiles adresine bakın. Bunun neden olduğu gibi bir geçmişi de dahil olmak üzere.

(Bir yan not, apt ile openjdk'yi kurarken, symlinks paket tarafından ayarlanmalıdır, böylece JAVA_HOME değerini ayarlamanıza veya PATH değerini değiştirmenize gerek kalmaz)

    
verilen cevap geirha 11.04.2012 18:41
40

Bash kabuğunuzun çalışan bir kabuk olarak başlatılıp başlatılmadığını kontrol edebilirsiniz:

shopt login_shell

Yanıt off ise giriş kabuğunu çalıştırmıyorsunuz.

Bash el kitabının çağırma bölümünü, Bash'in farklı yapılandırma dosyalarını nasıl okuduğuna (veya okumadığına) bakın.

man bash 'den alıntı:

  

Bash, etkileşimli giriş kabuğu olarak veya bir    --login seçeneğiyle etkileşimli olmayan kabuk, ilk önce okur   ve eğer bu dosya /etc/profile dosyasından komutları yürütür   bulunmaktadır. Bu dosyayı okuduktan sonra ~/.bash_profile için görünüyor,   Bu sıraya göre ~/.bash_login ve ~/.profile , okur ve   var olan ve okunabilen ilk komuttan yürütür.

Diğer taraftan

su ayrıca bir giriş kabuğunu varsayılan olarak başlatmaz, bunu --login seçeneğini kullanarak yapmanız gerektiğini bildirmeniz gerekir.

    
verilen cevap lgarzo 11.04.2012 18:59
22

Profil tercihlerini düzenleyerek giriş kabuğunun (yani bash -l) kullanılması için gnome terminalinin varsayılanını değiştirebileceğinizi belirtmek isterim.

Düzenle - & gt; Profil Tercihleri ​​- & gt; Başlık ve Komut sekmesi "Komutu giriş kabuğu olarak çalıştır" seçeneğini işaretleyin

    
verilen cevap kisoku 22.06.2013 02:23
13

Bir terminal açarsanız veya su çalıştırırsanız kabuk, giriş kabuğu olarak değil, normal bir etkileşimli kabuk olarak yürütülür. Bu yüzden ~/.bashrc değerini değil, ~/.bash_profile değerini okuyor. Kabuğunuzu giriş kabuğu olarak çalıştırmak için su 'yı -l seçeneği ile çalıştırabilirsiniz.

Bir GUI ile çalışırken, kabuk genellikle oturum açma kabuğu olarak çalıştırılmaz; bu nedenle, tüm yout öğelerini ~/.bashrc cinsinden koymak genelde iyidir.

    
verilen cevap Florian Diesch 11.04.2012 18:43
1

TL; DR

Klasik olarak önerilen ubuntu kurulumunda, ~/.bash_profile yalnızca belirli durumlarda değerlendirilir. Ve mantıklı.

Eşyalarınızı ~/.bashrc 'ye koyun, her zaman değerlendirilir.

Tamam, anlamak istiyorum, neden bu mantıklı?

Neler olup bittiğini anlamak için önemli noktalar:

    Linux'taki
  • tüm işlemler ve ortam değişkenlerini kullanır
  • ortam değişkenleri devralındı ​​
  • böylece tüm süreçlerin babasına bir kez koymanız yeterlidir. (özellikle, bazı hesaplama zamanı gerektirirse.)
  • Tüm sürecinizin babası genellikle sizden sonra başlatılıyor Cihazınızda giriş yapın (kimlik bilgilerinizi verin).
  • Giriş yapmak istediğinizde yalnızca bir kez yapmak isteyebileceğiniz şeyler var Bilgisayarınız (örneğin yeni posta için kontrol edin ...).

Yani "giriş" zamanı genellikle:

  • Konsol modunda, giriş yaptığınızda (Ctrl-Alt F1 ile) veya ssh aracılığıyla, Kabuğun tüm sürecin babası olacağı için, % Co_de%.
  • Grafik modunda, oturumunuzu açtığınızda, ilk işlem ~/.bash_profile 'yi okumak için (% u_de% klasik ubuntu) sorumlu olacak.

Tamam, bu yüzden eşyalarımı nereye koyacağım?

Oldukça karmaşık, tam hikaye burada . Ama burada bir düşüş var Bu ubuntu kullanıcıları için oldukça yaygındır. Bunu dikkate alarak:

  • gnome-session kabuk kullanıyorsunuz
  • % co_de değeriniz var ve eklemek için öneri 'yi takip edin almak için .profile 'sindeki% co_de yükleniyor en az değerlendirilen bir dosya ne olursa olsun mecanism .

Bu, bir şeyler koymak için hızlı bir öneridir.

  • ~ / .bashrc (Öneriyi takip etmeniz koşuluyla tüm durumlarda değerlendirilir ).

    Hızlı değerlendirme ortam değişkeni ve kodunuz için yalnızca kullanıcı ve yalnızca baskın komut satırı kullanımı (diğer adlar için örneği). bashizm açıktır.

    Kendisinin üzerine yüklendi:

    • grafik oturumlarında yeni bir kabuk penceresi / pencere oluştur.
    • bash araması
    • ~/.bash_profile yeni bölme veya sekme. ( ~/.bashrc değil!)
    • grafik konsol istemcisindeki herhangi bir bash örneği İşaretlemiyorsanız ( ~/.bash_profile / bash ...) seçeneği "giriş kabuğu olarak komut çalıştır".

    Ve önceki öneri sayesinde diğer tüm durumlarda yüklenecek.

  • ~ / .bash_profile (Yalnızca belirli bir durumda değerlendirilir )

    Yavaş değerlendirme ortam değişkeni ve yalnızca kullanıcılara yönelik ve konsol oturumu işlemleriniz için kod. bashizm kabul edilir. Yüklendi:

    • konsol girişi (Ctrl-Alt F1),
    • ssh bu makineye giriş yapar,
    • screen yeni bölme veya pencere (varsayılan ayarlar), ( tmux değil!)
    • terminator 'lik açık çağrılar,
    • grafik konsol istemcisindeki herhangi bir bash örneği ( gnome-terminal / tmux ...) yalnızca seçeneğini işaretlerseniz seçeneği "giriş kabuğu olarak komut çalıştır".
  • ~ / .profile (Sadece grafiksel oturumda değerlendirilir)

    yavaş değerlendirme ortam değişkenleri ve no-bashizm ile Yalnızca kullanıcılara yönelik ve tüm grafik oturum işlemleriniz için. Alır Grafik kullanıcı arayüzünüzde giriş yaptıktan sonra yüklenir.

verilen cevap vaab 08.03.2018 04:58

Etiketlerdeki diğer soruları oku