Précédent   Forum des professionnels en informatique > Systèmes > Linux > Système
Système Vos questions autour de l'administration système
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/08/2007, 12h09   #1
Membre éclairé
 
Avatar de icer
 
Inscription : janvier 2006
Messages : 332
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 332
Points : 308
Points : 308
Par défaut export une variable au démarrage

Bonjour,
J'ai un problème d'export de variable.
J'ai un service personnalisé qui se lance au démarrage grace à /etc/rc3.d
Ce service doit avoir une variable d'environement iniatilisé avant son démarrage.

Même en rajouter l'export dans ~/.bashrc, le service n'a pas accés à la variable.

Avez-vous une idée pour résoudre ce problème ?
icer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2007, 14h36   #2
Membre éclairé
 
Avatar de icer
 
Inscription : janvier 2006
Messages : 332
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 332
Points : 308
Points : 308
J'ai trouvé une solution;
En rajoutant un export dans le script /etc/init.d/rc, la variable est bien connue du service.

Mais je ne sais pas si c'est trés propre...
icer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2007, 14h40   #3
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 546
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 546
Points : 7 779
Points : 7 779
c'est ce qu'il faut faire oui
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2007, 14h44   #4
Invité régulier
 
Inscription : juillet 2007
Messages : 10
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 10
Points : 8
Points : 8
Citation:
Envoyé par icer
Bonjour,
J'ai un problème d'export de variable.
J'ai un service personnalisé qui se lance au démarrage grace à /etc/rc3.d
Ce service doit avoir une variable d'environement iniatilisé avant son démarrage.

Même en rajouter l'export dans ~/.bashrc, le service n'a pas accés à la variable.

Avez-vous une idée pour résoudre ce problème ?
Non, effectivement ce n'est pas très propre.
Ton script risque d'être écrasé à la prochaine mise à jour.

Sinon, tu peux essayer de faire un script qui se lance juste avant et qui se charge simplement de l'export, mais je ne suis pas sûr que ca fonctionne.
rommik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2007, 14h56   #5
Membre éclairé
 
Avatar de icer
 
Inscription : janvier 2006
Messages : 332
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 332
Points : 308
Points : 308
Il y a quelque chose qui m'échape quand même :

Dans /etc/passwd chaque utilisateur est associé à un shell (bash dans mon cas),
et ~/.bashrc est un script qui est lu quand l'utilisateur se connecte.

Avec la command
Code :
su un_utilisateur -c "command"
, (placée dans /etc/init.d/mon_service), on exécute une commande comme si on était un_utilisateur dans le MEME environement que celui-ci, ce qui inclu le même shell (bash). Donc le script ~/.bashrc doit être lu ! et si dans ce script il y a un export, le programme lancer par la commande su, doit connaitre cette variable.

Or, ce n'est pas le cas !!!

Pourquoi ???
qu'est-ce que j'ai raté ?
icer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2007, 13h44   #6
Membre éclairé
 
Avatar de icer
 
Inscription : janvier 2006
Messages : 332
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 332
Points : 308
Points : 308
Citation:
Non, effectivement ce n'est pas très propre.
Ton script risque d'être écrasé à la prochaine mise à jour.

Sinon, tu peux essayer de faire un script qui se lance juste avant et qui se charge simplement de l'export, mais je ne suis pas sûr que ca fonctionne.
Quelle serait la solution propre et sûre alors ?
icer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2007, 19h05   #7
Invité régulier
 
Inscription : juillet 2007
Messages : 10
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 10
Points : 8
Points : 8
Citation:
Envoyé par icer
Il y a quelque chose qui m'échape quand même :

Dans /etc/passwd chaque utilisateur est associé à un shell (bash dans mon cas),
et ~/.bashrc est un script qui est lu quand l'utilisateur se connecte.

Avec la command
Code :
su un_utilisateur -c "command"
, (placée dans /etc/init.d/mon_service), on exécute une commande comme si on était un_utilisateur dans le MEME environement que celui-ci, ce qui inclu le même shell (bash). Donc le script ~/.bashrc doit être lu ! et si dans ce script il y a un export, le programme lancer par la commande su, doit connaitre cette variable.

Or, ce n'est pas le cas !!!

Pourquoi ???
qu'est-ce que j'ai raté ?
Tiré de la page man de bash :
Code :
1
2
3
4
5
6
7
8
9
10
When an interactive shell that is not a login shell  is  started,  bash
reads  and executes commands from ~/.bashrc, if that file exists.  This
may be inhibited by using the --norc option.  The --rcfile file  option
will  force  bash  to  read  and  execute commands from file instead of
~/.bashrc.
 
When bash is started non-interactively, to  run  a  shell  script,  for
example, it looks for the variable BASH_ENV in the environment, expands
its value if it appears there, and uses the expanded value as the  name
 of  a  file to read and execute.
Donc, en gros, le shell se comporte différement s'il est interactif ou exécuté depuis un script.
Mais tu peux faire par exemple :
Code :
MA_VARIABLE=valeur commande
ou encore
Code :
1
2
export MA_VARIABLE=valeur
.  script_lancer_commande
Citation:
Envoyé par icer
Quelle serait la solution propre et sûre alors ?
Je pense que la solution la plus propre serait (si c'est possible) de changer une option dans un fichier de configuration qui soit équivalente à cette variable d'environnement.

Au pire, tu as toujours la solution rapide et sale
rommik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2007, 11h04   #8
Modérateur
 
Avatar de gangsoleil
 
R&D en systemes informatiques bas niveau Unix/Linux
Inscription : mai 2004
Messages : 5 499
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : R&D en systemes informatiques bas niveau Unix/Linux

Informations forums :
Inscription : mai 2004
Messages : 5 499
Points : 9 685
Points : 9 685
Citation:
Envoyé par icer
Il y a quelque chose qui m'échape quand même :

Dans /etc/passwd chaque utilisateur est associé à un shell (bash dans mon cas),
et ~/.bashrc est un script qui est lu quand l'utilisateur se connecte.

Avec la command
Code :
su un_utilisateur -c "command"
, (placée dans /etc/init.d/mon_service), on exécute une commande comme si on était un_utilisateur dans le MEME environement que celui-ci, ce qui inclu le même shell (bash). Donc le script ~/.bashrc doit être lu ! et si dans ce script il y a un export, le programme lancer par la commande su, doit connaitre cette variable.

Or, ce n'est pas le cas !!!

Pourquoi ???
qu'est-ce que j'ai raté ?
Regarde dans la man la différence entre les deux commandes suivantes :
Code :
1
2
su - un_utilisateur
su un_utilisateur
Solution : rajouter le '-' dans ton script devrait suffire.
__________________
Modérateur "C", "Informatique Générale & Hardware" et "Unix"
Les règles du forum
gangsoleil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2007, 09h46   #9
Membre éclairé
 
Avatar de icer
 
Inscription : janvier 2006
Messages : 332
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 332
Points : 308
Points : 308
Merci gangsoleil,

J'ai rajouter le tiret à la commande su et on obtient bien le résultat attendu.
ça me paraît beaucoup plus propre ainsi. Merci encore de ton aide.
icer est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h35.


 
 
 
 
Partenaires

Hébergement Web