2010-05-23 27 views
10

Bazı yazılımlar için küçük bir yükleme komut dosyası yazıyorum. Tek yaptığı bir hedef katmanın paketini açmak ve daha sonra bazı ortam değişkenlerini kalıcı olarak ayarlamak istiyorum - temelde paketlenmemiş lib'lerin konumu ve $ PATH'in güncellenmesi. Örneğin .bashrc dosyasını program aracılığıyla düzenlemek, örneğin sonuna uygun girdileri eklemek mi, yoksa başka bir yolu var mı? Standart uygulama nedir?Linux'ta kalıcı bir ortam değişkeni nasıl programlanır?

Düzenleme: paket çalıştırmak komut bir dizi (20+) tüm bu adlandırılmış ortam değişkenleri kullanabilir, bu yüzden onları bir şekilde ayarlamak gerektiğini içeren (değişken adları bir çarpışma son derece düşüktür şekilde seçilmiştir)

cevap

16

LSB uyumlu (bkz. spec) uygulama, /etc/profile.d/ klasöründe bir kabuk komut dosyası oluşturmaktır. Başvurunuzun ardından

İsim onu ​​(ve adı benzersiz olduğundan emin olun), adı .sh ile biter emin olun Komut dosyasında ihtiyaç ve export değişkenler (diğer yanı kabukları için komut eklemek isteyebilirsiniz) . Bu dizinden tüm *.sh komut dosyaları kullanıcı oturum açmada okunur - aynı zamanda /etc/profilesource d'dir.

Bunun, bash; daha doğrusu, bir tür anlaşmadır.

+0

Tamam, bu çözüm gibi görünüyor. muhtemelen yükleyicinin burada çalıştırılabilir bir komut dosyası yazmak için root olarak çalıştırılması gerekecektir. –

+0

Bu betik de hizmetler tarafından okunuyor mu? Örneğin apache mi yoksa tomcat mı? – Tobia

3

Standart uygulama, önceden yol dizininde ve standart kütüphane dizininde kurmaktır, dolayısıyla bu değişkenleri güncellemeye gerek yoktur.

Güncelleme .bashrc diğer şeylerin yanı sıra, biraz hataya eğilimli; Bir kullanıcı farklı bir dosya veya kabuk kullanıyorsa ne olur?

+1

+1 doğru. .Bashrc dosyasını onlar için düzenlemeye çalıştıysanız kullanıcılar çok mutsuz olurlar. Standart olmayan bir dizine yüklemek istiyorsanız veya kullanıcının iznini alacağını düşünmüyorsanız - '--install-dir = mydir' seçeneklerini belirtin ve ortamlarına eklemek için neye ihtiyaç duyduklarını söyleyin. . Http://golang.org/doc/install.html – msw

+0

adresinde iyi bir örnek var, düzenleme .bashrc'nin bir dizi nedenden dolayı şüpheli olacağını düşündüm. Sorun, yazılımın tüm bu adlandırılmış ortam değişkenlerini kullanan bir dizi komut dosyası (20+) içermesidir - bu yüzden bunları bir şekilde ayarlamanız gerekir. –

+2

Tek yolu, bunları komut dosyalarınızı çağıran bir sarmalayıcı komut dosyasına kaynaklamaktır. – WhirlWind

2

Ayrıca, bu değişkenleri ayarlayan bir komut dosyası da oluşturabilir ve yükleyebilirsiniz. Paketinizin kullanıcıları daha sonra bu komut dosyasını veya içeriğini kendi kabuk init dosyasına kopyalamaktadır.

+4

Ya da bir sarmalayıcı komut dosyası, var-ayarı komut dosyasını bilinen bir ad ve yerde çağırır ve ardından ilk yürütülebilir dosyayı çağırır. –

İlgili konular