Bash ile ortam değişkenlerini ayarlamak için hangi kurulum dosyaları kullanılmalıdır?


9

Burada ve burada sorduğum ve cevaplar aldığım gibi, PATH değişkeni uygulamanın nasıl etkinleştirildiğine bağlı olarak farklı yol adlarına sahip.

  • Yazılımı bash ile nasıl başlattığım önemli değil, aynı PATH değişkenine sahip olmak için hangi kurulum dosyaları (.bashrc, .profile, ...) kullanılmalıdır?

Yanıtlar:


15

Geleneksel olarak, unix sistemlerde kullanıcı başına ortam değişkenlerini tanımlayabileceğiniz yerdir ~/.profile. Bu dosya, oturum açma kabuğunun Bourne uyumlu bir kabuk olması koşuluyla oturum açma kabuğu (yani oturum açtığınızda başlatılan ve komutları yazabileceğiniz program) tarafından okunur.

Bash, Bourne uyumlu bir kabuktur. Giriş kabuğu olarak çağrıldığında, ~/.bash_profilebu dosyanın var olup ~/.profileolmadığını ve var olmadığını okur ~/.bash_profile.

Genel bir kural olarak, şifrenizi metin modunda (örneğin, bir metin konsolunda veya uzaktan ssh ile) yazarsanız, elde ettiğiniz kabuk bir giriş kabuğudur.

Ancak, parolanızı grafiksel bir programa yazar ve grafiksel bir ortama giriş yaparsanız, bu normal oturum açma kabuğunu atlar. İster .profilebu durumda grafiksel oturumu nasıl ayarlandığına bağlıdır okunur; örneğin Linux dağıtımları, ekran yöneticileri ve masaüstü ortamları arasında değişiklik gösterir. Bazen zincirdeki programlardan biri açıkça bir giriş kabuğu çağırır; bazen programlardan biri açıkça okur ~/.profile; ve bazen bunların hiçbiri olmaz ve ~/.profileokunmaz.

Değişkenliğin bir örneğini vermek için, ilgili komut dosyalarına hızlı bir bakıştan anlayabildiğim kadarıyla, Ubuntu 10.04'te: kdm veya lxdm ile giriş yaparsanız, var ~/.bash_profileise okunur ~/.profile; gdm ile giriş yaparsanız sadece ~/.profileokunur; xdm ile giriş yaparsanız, ~/.profileokunmaz.

Tanıdığım tüm sistemler, kullanıcı başına ortam değişkenlerini ayarlamanın bir yolunu sunar. Ne yazık ki genel bir cevap yok.

Bazen ~/.bashrcbir GUI ortamındaki ortam değişkenlerini ayarlamak veya her terminalde bir oturum açma kabuğu başlatmak için öneriler göreceğinizi unutmayın . Her ikisi de kötü fikirler; Bunun nedenlerinden biri, karşılaştığınız sorundur, yani ortam değişkenlerinizin yalnızca bir terminal aracılığıyla başlatılan programlarda mevcut olması ve doğrudan bir simge veya menü veya klavye kısayoluyla başlatılan programlarda bulunmamasıdır.


Bazı uygulamalar, .profile ve .bash_profile öğelerinin okunmadığı anlamına gelen etkileşimli oturum açma dışı kabukları çağırır. Bu uygulamalar için env değişkenleri ayarlamak istiyorsanız, bunu yapmanın bir yolu, bunun yer olması gerekmese de onları .bashrc'ye ayarlamaktır; bkz. github.com/mobile-shell/mosh/issues/102#issuecomment-12503646
William

@William .profilegiriş yaptığınızda okunur. Ortam değişkenlerini koymak .bashrcişe yaramaz ve senaryonuz şunu gösterir: Bu kabuğu çalıştıran (muhtemelen GUI) uygulamasının ortam değişkenleriniz olması gerekir, ancak bunları tanımlarsanız .bashrc, t.
Gilles 'SO- kötü olmayı kes

mosh bir GUI değildir, ssh'e bir alternatiftir. Davranışını savunmuyorum, sadece bağlantı kurduğum Github sayısında anlatıldığı gibi ben ve başkalarının yaşadıkları aynı problemle karşılaşan diğerlerine yardım etmeye çalışıyorum.
William

2

Kesin cevap, Bash Başlangıç ​​Dosyaları'nın bash man sayfası bölümünde . "Oturum açma kabuğu olmayan bir etkileşimli kabuk başlatıldığında, Bash bu dosya varsa ~ / .bashrc'deki komutları okur ve yürütür."

Diğer sorularınızın yanıtları, eshell'in gerçekten çalışmadığını gösterir bash. Emacs eshelldeğil bash. Bunun eshellyük olacağı varsayıldığında, .bashrcvarsayıldığı zshveya cshyüklendiği kadar hatalıdır .bashrc. Farklı bir kabuk.

İki seçenek görüyorum:

  1. Dizinlerin listesini alan ve için uygun bash kodunu bashve elisp kodunu üreten kendi komut dosyanızı oluşturun eshell.
  2. ESHELL veya SHELL ortam değişkeninizi gerçekten emacs içinde bash çalıştıracak şekilde ayarlayın . İşte bu yaptığım şey. Bash emacs iyi çalışır.

Yinelenmeden bir yola dizin ekleme konusundaki tartışma da ilginizi çekebilir .


1

~ / .Profile içinde PATH ayarlamak sadece işe yarayacaktır. Bu dosya, bash dahil bildiğim her POSIX uyumlu veya Bourne benzeri kabuk tarafından giriş yapıldığında okunur. Bu dosyada değişiklik yaparsanız, değişikliklerin etkili olması için oturumu kapatıp tekrar oturum açmanız gerekir. PATH giriş işleminizin ortamının bir parçası olduğundan, daha sonra başlattığınız her kabuğa dışa aktarılmalıdır.

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.