Je suis sous Ubuntu 12.04
J'ai ajouté
export LD_LIBRARY_PATH=/home/dspies/workspace/hdf5-1.8.11-linux-shared/lib
au profil
mais quand je me connecte et ouvre le terminal et met echo $LD_LIBRARY_PATH
il n'y a rien.
Quand je passe à ctrl-alt-F1 et que je me connecte, echo $LD_LIBRARY_PATH
donne
/home/dspies/workspace/hdf5-1.8.11-linux-shared/lib
mais alors quand je lance screen
, echo $LD_LIBRARY_PATH
à partir de l'écran est à nouveau vide
Dans quelles circonstances puis-je m'attendre à ce que les variables d'environnement de .profile soient définies? (curieusement, il semble que toutes les modifications apportées à PATH dans .profile apparaissent toujours)
EDIT: Désolé, je suppose que je n’ai pas précisé ce que je voulais vraiment savoir, c’est: comment définir une variable d’environnement que je veux définir n'importe où (par exemple, à l’écran, dans le terminal, lorsque je me connecte, et quand Je ssh dans)?
La réponse est:
Je devrais les mettre en .pam_enviornment
Voir ici https://help.ubuntu.com/community/EnvironmentVariables
J'imagine que c'est l'une des questions les plus courantes, je ne sais pas pourquoi personne ne m'a donné la bonne réponse quand j'ai posé cette question.
Du manuel de Bash:
Lorsque bash est appelé en tant que shell de connexion interactif ou non interactif avec l'option --login, il lit et exécute d'abord les commandes du fichier/etc/profile, si ce fichier existe. Après avoir lu ce fichier, il recherche ~/.bash_profile, ~/.bash_login et ~/.profile, dans cet ordre, puis lit et exécute les commandes à partir de la première qui existe et est lisible.
Cela signifie que si vous avez .bash_profile
ou .bash_login
dans votre dossier personnel, bash ne lira pas le contenu de votre .profile
. De plus, lorsqu'il n'est pas exécuté dans un shell de connexion interactif, .profile
ne sera pas lu non plus.
echo $0
renverra le nom du script en cours d'exécution, lorsque cette commande sera exécutée dans un script Shell. Dans un terminal, le type de shell utilisé sera renvoyé.
Vous utilisez bash
Shell. Vous devez ajouter cette ligne
export LD_LIBRARY_PATH=/home/dspies/workspace/hdf5-1.8.11-linux-shared/lib
dans le fichier ~/.bash_profile
.
EDIT:
Vous pouvez trouver les différents noms de scipt de profil de connexion pour différents shells, here
EDIT2:
Même si j’ai eu deux réponses différentes quand j’ai exécuté echo $0
sur deux machines différentes. Sur une machine, j'ai bash
et sur l'autre, -bash
. J'ai posé cette question ici . C'est ce que j'ai comme réponse.
Processes with a - at the beginning of arg 0 have been run via login, or by exec -l in bash.
Après avoir lu cette réponse, j’ai fait help exec
et qui se lit, If the first argument is '-l', then place a dash in the zeroth arg passed to FILE, as login does
.