Çevresel değişkenler kalıcı olarak nasıl ayarlanır


227

Değişkenlerim

LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
ORACLE_HOME=/usr/lib/oracle/11.2/client64

Bu değişkenler kalıcı olarak nasıl kaydedilir?


2
Bu sayfadaki diğer cevaplar mükemmel. Küçük bir öneri /usr/lib/oracle/11.2/client64/lib, /etc/ld.so.conf.d/yolun altına yeni bir dosya eklemek olacaktır . O zaman LD_LIBRARY_PATH ayarlamanız gerekmez, ayrıca buraya bakın .
Elliott Frisch,

1
Dikkat et, başlangıçta göründüğünden daha fazla hikaye var. Sizi cevabımı kontrol etmeye davet ediyorum.
jasonleonhard

Yanıtlar:


252

Dosyaya .profileveya giriş kabuğu profil dosyasına (ana dizininizde bulunan) ekleyebilirsiniz .

Çevresel değişkeni "kalıcı olarak" değiştirmek için en azından şu durumları göz önünde bulundurmanız gerekir:

  1. Giriş / Giriş olmayan kabuk
  2. Etkileşimli / Etkileşimli olmayan kabuk

darbe

  1. Giriş kabuğu olarak Bash yükleyecektir /etc/profile, ~/.bash_profile, ~/.bash_login, ~/.profilesırayla
  2. Giriş yapmayan etkileşimli kabuk olarak Bash ~/.bashrc
  3. Giriş yapmayan etkileşimli olmayan kabuk olarak Bash, ortam değişkeninde belirtilen yapılandırmayı yükler $BASH_ENV
$EDITOR ~/.profile
#add lines at the bottom of the file:  
     export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
     export ORACLE_HOME=/usr/lib/oracle/11.2/client64

zsh

$EDITOR ~/.zprofile
#add lines at the bottom of the file:  
     export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
     export ORACLE_HOME=/usr/lib/oracle/11.2/client64

ksh

$EDITOR ~/.profile
#add lines at the bottom of the file:  
     export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
     export ORACLE_HOME=/usr/lib/oracle/11.2/client64

memleket

$EDITOR ~/.profile
#add lines at the bottom of the file:  
     LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib     
     ORACLE_HOME=/usr/lib/oracle/11.2/client64
     export LD_LIBRARY_PATH ORACLE_HOME

csh veya tcsh

$EDITOR ~/.login
#add lines at the bottom of the file:  
     setenv LD_LIBRARY_PATH /usr/lib/oracle/11.2/client64/lib
     setenv ORACLE_HOME /usr/lib/oracle/11.2/client64

Tüm kullanıcılar için kalıcı yapmak isterseniz, ilgili dosyaları altında /etc/, örneğin /etc/profileBourne benzeri mermilerde, /etc/csh.login(t) csh ve /etc/zsh/zprofileve /etc/zsh/zshrczsh için düzenleyebilirsiniz.

/etc/environmentLinux sistemlerinde PAM modülü tarafından okunan pam_envve kabuk tarzı açılımları değil, yalnızca basit ödevleri destekleyen bir seçenek . ( Bu konuda Debian'ın rehberine bakınız .)

Bu dosyaların zaten bazı ödevleri içermesi muhtemeldir, bu nedenle dosyanızda önceden gördüğünüz sözdizimini takip edin.

Değişiklikleri uygulamak için kabuğu yeniden başlattığınızdan ve kullanıcıyı yeniden oluşturduğunuzdan emin olun.

Sistem çapında bir ortam değişkeni eklemeniz gerekirse, /etc/profile.ddeğişkeni başlatmak için sh komut dosyasını içeren bir klasör var.
Sh komut dosyanızı, verdiğiniz tüm değişkenlerle birlikte buraya yerleştirebilirsiniz.
Debian'da env'ye değişken eklemek için standart bir yol olarak kullanılmaması gerektiğine dikkat edin.


Bu .profile, /etc/ancak buradaki değişkenleri nasıl ayarlayacağımı .profilelütfen söyleme
user3021349

6
.profileAna dizininizde değil/etc/
Kiwy

1
[Admin@localhost etc]$ cat ~/.profile cat: /home/Admin/.profile: No such file or directory [Admin@localhost etc]$
user3021349

4
@ user3021349 Kaba olmak istemem ama bir saniyenizi düşünüyorsanız usta bir editör kullanabilirsiniz. :wqdosya yazma ve vi komutundan çıkma komutu daha escönce
yazmayı

3
crontabKomut dosyalarında ortam değişkenlerini göz önünde bulundurmanız gerekir . Bir crontabkomut dosyası çalışırken bu konumların hiçbiri aranmayacak.
yegle

71

Tüm kullanıcılar / mermiler için, dağıtımına bağlı olarak /etc/environmentya da kullanabilirsiniz /etc/profile. /etc/profile.dVarsa, yeni bir dosya oluşturmak tercih edilebilir, çünkü paketleme sistemi tarafından yapılan güncellemelerle çakışma olasılığı daha düşüktür.

In /etc/environment, değişkenler genellikle name=value, örneğin ile ayarlanır :

ORACLE_HOME=/usr/lib/oracle/11.2/client64

Olarak /etc/profile, kullanmak gerekir exportbu bir senaryo, örneğin olduğundan:

export ORACLE_HOME=/usr/lib/oracle/11.2/client64

Aynı durum altındaki bir dosya için /etc/profile.dde geçerlidir, ayrıca dosyanın çalışması için yerine getirilmesi gereken adlandırma kısıtlamaları olabilir. Debian'da, dosya uzantıya sahip olmalıdır .sh(kaynak kodlu olduğundan çalıştırma izinleri veya çalıştırılabilir izinler gerektirmese de). dağıtım /etc/profiledosyalarınızı kontrol edin veya bu dosyaların nasıl yüklendiğini görmek için komut dosyasına bakın.

Ayrıca, LD_LIBRARY_PATHkalıcı olarak ayarlamanın , güvenlik riski olmak gibi potansiyel olarak sorunlu olduğunu da unutmayın . Alternatif olarak, LD_LIBRARY_PATHçalıştırmadan önce ihtiyacı olan her program için komut satırının başlangıcına hazırlanmanın bir yolunu bulmanızı öneririm . Örneğin:

LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib myprog

Bunu yapmanın bir yolu, programı çalıştırmak için bir sarmalayıcı komut dosyası kullanmaktır. Bunu, programınızla aynı adı verebilir ve programın bulunduğu /usr/local/binyerden önce görünen herhangi bir yere ya da herhangi bir yere koyabilirsiniz PATH. İşte örnek bir betik (betiği unutmayın chmod +x):

#!/bin/sh
LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib /real/location/of/myprog "$@"

öyleyse, dosyama değer çiftleri eklediysem environment, bunların yüklenmesine neden olan nedir? Örneğin, vi editöründen çıktıktan sonra (başarılı bir şekilde yazılan değişiklikler), yazmayı echo $MY_NEW_VARIABLEve yazdırmayı görmeyi bekliyorum - EDIT: Yeni bir komut kabuğu başlattıysam orada olduklarını görüyorum
bkwdesign 0

Bunun kişisel bir sorun olup olmadığından emin değil, ancak /etc/environmentbash terminalini yeniden başlattıysam veya yazsam bile, işletim sistemimi yeniden başlatmam gerekiyordu source /etc/environment. Bu nedenle, ortam değişkeninin sürekliliği olmayan sorunlarla karşılaşıyorsanız, yeniden başlatmayı deneyin.
Blairg23

@bkwdesign @ Blairg23, /etc/environmentbir senaryo değildir, bu yüzden kaynak gösterilemez. PAM tarafından giriş zamanında (ve bir kaç sistem olayının bir kısmı) PAM tarafından yüklenir, böylece bir oturumda oturum açabilir / giriş yapabilir veya terminalde yeni bir giriş oturumu çalıştırabilirsiniz $ su <your username here>. Çıktıktan sonra değerler kaybolacaktır, bu yüzden muhtemelen sadece tam olarak oturumu kapatıp / oturumu kapatmaya daha az eğilimlidir.
AaronDanielson

2

oracle yüklediğinizde, oracle Tamam'ı tıklatmadan önce bazı komut dosyalarını çalıştırmanızı istedi. Bu betik .bash_profile, Oracle kullanıcı ev dizinine kukla bir ayar koydu . Dosyayı görmek için ls -altüm gizli dosyaları gösterecektir.

tip nano bash_profiledosyayı açmak için. Ana bilgisayar adınızı ve uygun sid adını yansıtmak için dosyada değişiklikler yapın. değişiklik yapılması gereken diğer ayarları kontrol edin. Kaydetmek isteyip istemediğiniz sorulduğunda, kaydetmek için x kontrolüne basın ve y yazın. Kaydetmek için geri dönüş tuşuna basın. Bilgisayarı yeniden başlatın. Oracle kullanıcısı olarak günlüğe kaydetme. veritabanını yazarak başlatın

sqlplus / as sysdba

startup  

Bunun kabul edilen cevaptan farkı nedir?
roaima
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.