Soru için motivasyon:
Unity masaüstü ile Ubuntu 12.04 LTS 2 kullanıyorum. .Bashrc dosyamda PATH değişkenime birkaç dizin ekliyorum ve JAVA_HOME gibi birkaç ortam değişkeni tanımlıyorum. Uygulamaları bir terminalden başlattığımda (çalışan bash, varsayılan kabuğum) bu harika çalışıyor, ancak Unity başlatıcıyı kullanan kısayolların birçoğu için #! / Bin / sh kullanmak için tanımlanmış gibi görünen uygulamaları çalıştırıyorlar. / bin / tire olarak adlandırılır ve ~ / .bashrc veya ~ / .profile öğelerinin içeriğini almazlar.
Sanırım .bashrc değişikliklerini almaya zorlamak için / bin / sh yerine / bin / bash kullanmak için bu kısayolları değiştirebilirim, ancak bu gerçekten acayip görünüyor.
Ubuntu 12.04'ün (varsayılan olarak) / bin / sh - / bin / dash olduğu ve varsayılan kabuğumun / bin / bash olduğu düşünüldüğünde, PATH'ı değiştirmeyi ve istersem ortam değişkenlerini tanımlamayı seçebileceğim tek bir yer var tüm bu koşullar altında mevcut olmak :
- Ne zaman bir oturum açma olmayan bash kabuğu (birlik içinde terminal kullanarak) oluşturmak
- Ne zaman bir giriş bash kabuğu oluşturduğumda (örneğin, ssh üzerinden uzaktan oturum açma)
- Ne zaman bir Unity uygulama başlatıcısı kullanırsam (başlatıcı / bin / sh kullanıyorsa).
- Bir cron işi yürütüldüğünde (/ etc / crontab içinde SHELL = / bin / sh verildiğinde).
Doğru anlarsam, tahmin ediyorum:
- (1) / (2) ve (3) / (4) farklıdır, çünkü (1) / (2) bash ve (3) / (4) kesiktir.
- (1) ve (2) farklıdır çünkü bash'ın yüklemeyi seçtiği dosyalar, bir giriş kabuğu olup olmamasına bağlı olarak değişir.
- (3) ve (4) farklıdır, çünkü (3) giriş yaptıktan sonra bir noktada gelecek (ve bu nedenle ~ / .profile üst süreçlerinden biri tarafından kaynaklanmış olacakken (4) Ben değilim nokta değil kaydedilir ve dolayısıyla ~ / .profile okuma gitmiş olmayacak.
(Kabuğun etkileşimli olup olmadığı gibi diğer faktörlerin de önemi varsa şaşırmazdım, bu yüzden muhtemelen tahmin etmediğim daha fazla kombinasyon var ... Sorumu geliştirmekten memnunum " " bu durumda.)
Bir noktada, birisinin ortam değişkenlerini kabuktan bağımsız bir şekilde (veya en azından tire / bash uyumlu bir şekilde) nasıl / nerede değiştireceğinizi söyleyen bir tür rehber yapması beklenirdi ... Böyle bir rehber bulmak için doğru arama terimlerini bulmak gibi görünüyor.
Çözümler veya çözüm önerileri büyük beğeni topluyor!
Güncellenmiş:
- Açıklama: Bu, 12.04 yükleme işlemi tarafından oluşturulan varsayılan Ubuntu kullanıcısıdır, bu nedenle fantezi değildir. Bu mu var bir ~ / .profile (açıkça kaynaklar ~ / .bashrc) ve sadece ~ / .bash * dosyaları Bashrc, .bash_history ve .bash_logout ... öylesine hayır hayır .bash_profile var olan sunuyoruz.
- Kapsam vurgu: Gerçekten varsayılan interaktif kabuk (bash) ve (tire diğer adı) kullanımı / bin / sh olur herhangi komut dışında herhangi kabukları umurumda değil, bu yüzden her şey bu zorlaştırmak için gerek yoktur ekstra için tcsh / ksh / zsh / vb. destek.