Journal Variables d'environnement....

Posté par  (site Web personnel) .
Étiquettes : aucune
0
4
jan.
2004
Cher journal,

je profite de cette espace pour te faire part d'une petite interrogation!!!

Voilà, alors que je regardais un de mes anciens projets universitaire qui consistait en la programmation d'un shell de type UNIX en C, je le "recompilate" et là segfault.

Je tombe des nues, je me rapelle l'avoir testé dans tous les sens et il marchait nickel... je prends mon éditeur préféré (emacs) et je reprend le code, je m'aperçois que dans la tite fonctionnalité qui permet de changer le prompt, je faisais un remplacement du motif "\h" par le résultat de getenv("HOME") et c'est là que se pose le problème.

Lorque j'ai développé ce programme, j'utilisais une mandrake (j'avais aussi testé sur redhat) et aujourd'hui j'utilise debian. et cette variable d'environement avait comme valeur : "nom_de_la_machine.nom_du_domaine" alors que sur ma debian actuelle elle est du genre "nom_de_la_machine". Et comme je découpais la chaine de caractères `getenv("HOSTNAME")` selon le motif '.' sans faire de test, ça n'a pas pardonné.... Maintenant c'est corrigé....

Donc j'en viens à mon interrogation :
est ce que mandrake nomme toujours cette variable de cette manière ? si non qui a raison ? qui a tord ? y'a t'il une 'norme' (implicite) ? où est ce au bon vouloir de la distrib ?

Pour ceux qui eux d'autres distribs ? ce serait aussi intéressant de savoir !!


merci d'avance,..

M.
  • # Re: Variables d'environnement....

    Posté par  (site Web personnel) . Évalué à 3.

    je ne pense pas qu'il y ait de norme en la matière, d'ailleurs le manuel de référence de bash est très évasif là-dessus :
    HOSTNAME : The name of the current host.

    Il me semble plus logique que HOSTNAME contienne effectivement le nom complet (par référence à la commande hostname) mais on pourra m'objecter que dans ce cas $HOSTNAME fait un peu double emploi avec `hostname`... mais je ne suis pas d'accord :)
    Il me semble par ailleurs avoir rencontré des configurations dans lesquelles HOSTNAME était le nom complet et HOST le nom court.

    En tout cas, je te confirme que mandrake fait toujours un HOSTNAME=`/bin/hostname` dans le /etc/profile
    • [^] # Re: Variables d'environnement....

      Posté par  (site Web personnel) . Évalué à 2.

      chez moi (debian SID)

      /bin/hostname (sans arguments supplémentaires) renvoi 'nom_de_la_machine'... et c'est donc la même chose que 'echo $HOSTNAME'

      /bin/hostname --long donne par contre bien le FQDN (full qualified domain name).

      D'après ce que tu dis, le /bin/hostname (sans arguments) de mandrake et debian ne donne pas la même chose, étrange ?

      strace sur /sbin/hostname indique qu'il utilise la fonction système uname (voir man 2 uname), et qu'il passe un coup de libresolv.so.xx pour résoudre tout ça ... faudrait matter les sources pour plus de détails.....


      ...

      M.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.