it-swarm.com.de

So setzen Sie Umgebungsvariablen dauerhaft

Meine Variablen sind

LD_LIBRARY_PATH=/usr/lib/Oracle/11.2/client64/lib
Oracle_HOME=/usr/lib/Oracle/11.2/client64

Wie speichere ich diese Variablen dauerhaft?

238
user3021349

Sie können es der Datei .profile Oder Ihrer Login-Shell-Profildatei (in Ihrem Home-Verzeichnis) hinzufügen.

Um die Umgebungsvariable "dauerhaft" zu ändern, müssen Sie mindestens die folgenden Situationen berücksichtigen:

  1. Login/Nicht-Login-Shell
  2. Interaktive/nicht interaktive Shell

bash

  1. Bash as Login Shell lädt /etc/profile, ~/.bash_profile, ~/.bash_login, ~/.profile In der Reihenfolge
  2. Bash als nicht angemeldete interaktive Shell lädt ~/.bashrc
  3. Bash als nicht angemeldete nicht interaktive Shell lädt die in der Umgebungsvariablen $BASH_ENV Angegebene Konfiguration.
$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

bourne

$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 oder 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

Wenn Sie es für alle Benutzer dauerhaft machen möchten, können Sie die entsprechenden Dateien unter /etc/ Bearbeiten, dh /etc/profile Für Bourne-ähnliche Shells, /etc/csh.login Für (t) csh, und /etc/zsh/zprofile und /etc/zsh/zshrc für zsh.

Eine andere Option ist die Verwendung von /etc/environment, Das auf Linux-Systemen vom PAM-Modul pam_env Gelesen wird und nur einfache Zuweisungen unterstützt, keine Erweiterungen im Shell-Stil. (Siehe Debians Leitfaden dazu.)

Diese Dateien enthalten wahrscheinlich bereits einige Zuweisungen. Befolgen Sie daher die Syntax, die bereits in Ihrer Datei vorhanden ist.

Stellen Sie sicher, dass Sie die Shell neu starten und den Benutzer erneut anmelden, um die Änderungen zu übernehmen.

Wenn Sie eine systemweite Umgebungsvariable hinzufügen müssen, gibt es jetzt den Ordner /etc/profile.d, Der das sh-Skript zum Initialisieren der Variablen enthält.
Hier können Sie Ihr sh-Skript mit allen exportierten Variablen platzieren.
Seien Sie vorsichtig, obwohl dies nicht als Standardmethode zum Hinzufügen von Variablen zu env unter Debian verwendet werden sollte.

263
Kiwy

Um dies zu tun, können Sie für alle Benutzer/Shells je nach Distribution /etc/environment Oder /etc/profile Verwenden. Das Erstellen einer neuen Datei in /etc/profile.d Ist möglicherweise vorzuziehen, wenn sie vorhanden ist, da es weniger wahrscheinlich ist, dass Konflikte mit vom Verpackungssystem vorgenommenen Aktualisierungen auftreten.

In /etc/environment Werden Variablen normalerweise mit name=value Gesetzt, z.

Oracle_HOME=/usr/lib/Oracle/11.2/client64

In /etc/profile Müssen Sie export verwenden, da dies ein Skript ist, z.

export Oracle_HOME=/usr/lib/Oracle/11.2/client64

Gleiches gilt für eine Datei unter /etc/profile.d. Möglicherweise gibt es auch Namensbeschränkungen, die erfüllt sein müssen, damit die Datei funktioniert. Unter Debian muss die Datei die Erweiterung .sh Haben (obwohl sie keine Bang-Line oder ausführbare Berechtigungen benötigt, da sie bezogen wird). Überprüfen Sie Ihre Distributionsdokumentation oder sehen Sie sich das Skript /etc/profile an, um zu sehen, wie diese Dateien geladen werden.

Beachten Sie auch, dass die dauerhafte Einstellung von LD_LIBRARY_PATH Potenziell problematisch ist, einschließlich eines Sicherheitsrisikos. Als Alternative würde ich vorschlagen, einen Weg zu finden, um LD_LIBRARY_PATH Für jedes Programm, das es benötigt, vor dem Ausführen vor den Start der Befehlszeile zu stellen. Z.B:

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

Eine Möglichkeit, dies zu tun, besteht darin, ein Wrapper-Skript zum Ausführen des Programms zu verwenden. Sie können diesem Programm den gleichen Namen geben wie Ihrem Programm und es in /usr/local/bin Oder an einer beliebigen Stelle vor dem Speicherort Ihres Programms in PATH einfügen . Hier ist ein Beispielskript (vergessen Sie nicht, das Skript chmod +x Zu verwenden):

#!/bin/sh
LD_LIBRARY_PATH=/usr/lib/Oracle/11.2/client64/lib /real/location/of/myprog "[email protected]"
73
Graeme

bei der Installation von Oracle hat Oracle Sie gebeten, einige Skripts auszuführen, bevor Sie auf OK klicken. Dieses Skript hat eine Dummy-Einstellung in .bash_profile Im Oracle-Benutzer-Home-Verzeichnis eingefügt. Um die Datei anzuzeigen, zeigt ls -al Alle versteckten Dateien an.

geben Sie nano bash_profile ein, um die Datei zu öffnen. Nehmen Sie Änderungen an der Datei vor, um Ihren Hostnamen und den entsprechenden Seitennamen wiederzugeben. Überprüfen Sie alle anderen Einstellungen, die geändert werden müssen. Drücken Sie die Steuerungstaste x, um zu speichern, und geben Sie y ein, wenn Sie gefragt werden, ob Sie speichern möchten. Drücken Sie zum Speichern die Eingabetaste. Starte den Computer neu. Protokollierung als Oracle-Benutzer. Starten Sie die Datenbank durch Eingabe

sqlplus / as sysdba

startup  
2
frankfurt