|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : juin 2006 Messages : 12 ![]() |
Bonjour,
Je suis arrivé récemment sur un projet qui doit tourner sous AIX et Linux en KSH. Le problème, c'est que la solution utilisé pour différencier les 2, le test est fait sur une commande uname. Ceci marchait un temps, car les machines étaient bien ciblées. Ainsi, les linux étaient des mandrake, et n'avaient pas réélement de KSH : un lien ksh -> bash était créé pour faire illusion. Ainsi, en fonction de uname ("AIX" ou "Linux"), le shell savait (indirectement) s'il utilisait du bash ou du ksh. Le problème, c'est que maintenant, la boîte décide qu'il va y avoir aussi des Red Hat Enterprise 4, et cette distribution inclut un KSH... Donc le programme voit que c'est du Linux, et lance des commandes bash qui ne marchent pas toutes, puisque nous sommes en fait en KSH. L'idée, c'est de ne pas reconnaître la distribution, mais de savoir quel shell est réélement lancé. Il y avait bien la variable $SHELL qui semblait intéressante, mais elle garde le shell qui lance le script, et non celui utilisé dans le script. Avez vous une solution qui tienne la route et propre ? (= ne pas différencier chaque machine qui puisse arriver) Merci d'avance pour votre aide =) OniChou. |
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : juillet 2004 Messages : 2 246 ![]() |
__________________
Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer. |
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : juin 2006 Messages : 12 ![]() |
Bonjour,
Tout d'abord, merci pour ta réponse. Helas, cela ne m'aide pas, car les scripts contiennent un shabang, donc $0 renvoie le nom du script. De plus, même sans le shabang, ca ne changerait rien, puisque le problème provient des machines où ksh est un lien symbolique, donc $0 me renverrait ksh, alors que le véritable shell utilisé derrière sera bash. |
|
|
00
|
|
|
#4 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2008 Messages : 13 ![]() |
Bonjour OniChou,
ormis effectivement voir la variable $SHELL qui positionne ton interpreteur, je vois comme autre solution l'entete du shell utilisé .. du style #!/bin/... cela pourra tu donner l'interpreteur a utiliser ... Solution relativement simple je l'admets .... ^^ |
|
|
00
|
|
|
#5 |
![]() ![]() R&D en systemes informatiques bas niveau Unix/Linux Inscription : mai 2004 Messages : 5 502 ![]() |
Bonjour,
Est-ce que la variable d'environnement $SHELL serait correctement mise à jour par hasard ? Si tel est le cas, alors il suffit de tester sa valeur dans le script. |
|
|
00
|
|
|
#6 |
|
Invité régulier
![]() Inscription : juin 2006 Messages : 12 ![]() |
Bonjour,
Donc d'après mes tests : - Utiliser le shabang (#!/bin/ksh) ne fonctionne pas, puisque je récupère ksh, même si ksh est en fait un lien vers bash. - Utiliser la variable $SHELL ne fonctionne pas non plus, puisqu'elle est positionnée au lancement du shell, et si la personne tourne sous un shell pdksh par exemple, la variable sera toujours celle-ci. Merci de votre aide. Pour info, j'avais un début de piste avec "ksh --version" qui me sort bien le véritable shell utilisé. Hélas, cette option n'est pas implementée dans pdksh (qui est le ksh sous notre Red Hat), donc inutilisable. |
|
|
00
|
|
|
#7 | ||
![]() ![]() Inscription : juillet 2004 Messages : 2 246 ![]() |
Code :
__________________
Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer. |
||
|
|
00
|
|
|
#8 |
|
Invité régulier
![]() Inscription : juin 2006 Messages : 12 ![]() |
Bonjour,
Effectivement, j'y avais pensé, mais il faudra faire des tests multiples pour les machines utilisant "alternatives". En effet, sur une debian, ksh est un lien, mais vers /etc/alternatives/ksh, qui lui même est un lien vers /bin/ksh93 =/ Pas pratique quand même ^^; Merci en tout cas, mais je ne peux pas utilisé cette méthode |
|
|
00
|
|
|
#9 |
![]() ![]() Inscription : juillet 2004 Messages : 2 246 ![]() |
Tu pourrais faire une fonction qui suit récursivement les liens symboliques jusqu'à trouver un vrai fichier.
Si tu envisages d'avoir un outil sur plusieurs distributions différents, tu auras nécessairement des traitement différents. </EnfonçageDePortesOuvertes>
__________________
Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer. |
|
|
00
|
|
|
#10 |
|
Invité régulier
![]() Inscription : juin 2006 Messages : 12 ![]() |
C'est une idée... un peu violente, mais c'est une idée
Mais bon, ca ne sert plus à rien de se prendre la tête, la décision a été prise au dessus de moi que, sous nos linux, tous les ksh seront sauvegardés, et deviendront des liens vers bash u_u Y'a vraiment des boîtes où ils se cassent pas la tête u_u En tout cas, merci pour votre aide et soutien dans mon problème =) |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com