web-dev-qa-db-fra.com

Comment définir de manière permanente des variables environnementales

Mes variables sont

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

Comment sauvegarder définitivement ces variables?

238
user3021349

Vous pouvez l'ajouter au fichier .profile ou votre fichier de profil Shell de connexion (situé dans votre répertoire personnel).

Pour modifier la variable d'environnement de façon "permanente", vous devez considérer au moins ces situations:

  1. Shell de connexion/non-connexion
  2. Shell interactif/non interactif

bash

  1. Bash en tant que shell de connexion chargera /etc/profile, ~/.bash_profile, ~/.bash_login, ~/.profile dans l'ordre
  2. Bash en tant que shell interactif sans connexion chargera ~/.bashrc
  3. Bash en tant que shell non interactif sans connexion chargera la configuration spécifiée dans la variable d'environnement $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

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 ou 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

Si vous souhaitez le rendre permanent pour tous les utilisateurs, vous pouvez modifier les fichiers correspondants sous /etc/, c'est à dire. /etc/profile pour les obus de type Bourne, /etc/csh.login pour (t) csh et /etc/zsh/zprofile et /etc/zsh/zshrc pour zsh.

Une autre option consiste à utiliser /etc/environment, qui sur les systèmes Linux est lu par le module PAM pam_env et ne prend en charge que les affectations simples, pas les extensions de style Shell. (Voir Guide de Debian à ce sujet.)

Ces fichiers sont susceptibles de contenir déjà certaines affectations, alors suivez la syntaxe que vous voyez déjà présente dans votre fichier.

Assurez-vous de redémarrer le shell et de vous reconnecter à l'utilisateur pour appliquer les modifications.

Si vous devez ajouter une variable d'environnement à l'échelle du système, il y a maintenant /etc/profile.d dossier contenant le script sh pour initialiser la variable.
Vous pouvez placer votre script sh avec toutes les variables que vous avez exportées ici.
Attention, ceci ne doit pas être utilisé comme un moyen standard d'ajouter une variable à env sur Debian.

263
Kiwy

Pour faire si pour tous les utilisateurs/shells, selon la distribution, vous pouvez utiliser /etc/environment ou /etc/profile. Création d'un nouveau fichier dans /etc/profile.d peut être préférable s'il existe, car il sera moins susceptible d'entrer en conflit avec les mises à jour effectuées par le système d'emballage.

Dans /etc/environment, les variables sont généralement définies avec name=value, par exemple:

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

Dans /etc/profile, vous devez utiliser export car il s'agit d'un script, par exemple:

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

Il en va de même pour un fichier sous /etc/profile.d, il peut également y avoir des restrictions de dénomination qui doivent être respectées pour que le fichier fonctionne. Sur Debian, le fichier doit avoir l'extension .sh (bien qu'il n'ait pas besoin d'une ligne de bang ou d'autorisations exécutables car il provient). consultez votre documentation de distribution ou consultez le /etc/profile script pour voir comment ces fichiers sont chargés.

Notez également que le paramètre LD_LIBRARY_PATH est en permanence potentiellement problématique , y compris un risque pour la sécurité. Comme alternative, je suggérerais de trouver un moyen d'ajouter le LD_LIBRARY_PATH au début de la ligne de commande pour chaque programme qui en a besoin avant de s'exécuter. Par exemple:

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

Une façon de procéder consiste à utiliser un script wrapper pour exécuter le programme. Vous pouvez lui donner le même nom que votre programme et le mettre dans /usr/local/bin ou n'importe où qui apparaît avant l'emplacement de votre programme dans PATH. Voici un exemple de script (n'oubliez pas de chmod +x le scénario):

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

lorsque vous installez Oracle, Oracle vous a demandé d'exécuter certains scripts avant de cliquer sur ok. Ce script a mis un paramètre factice dans le .bash_profile dans le répertoire de base de l'utilisateur Oracle. Pour voir le fichier, ls -al affichera tous les fichiers cachés.

tapez nano bash_profile pour ouvrir le fichier. Apportez des modifications au fichier pour refléter votre nom d'hôte et le nom sid approprié. vérifiez tout autre paramètre devant être modifié. appuyez sur contrôle x pour enregistrer et tapez y lorsqu'on vous demande si vous souhaitez enregistrer. Appuyez sur la touche Retour pour enregistrer. Redémarrer le PC. Connexion en tant qu'utilisateur Oracle. démarrer la base de données en tapant

sqlplus / as sysdba

startup  
2
frankfurt