|
Publicité | ||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : septembre 2009 Messages : 10 ![]() |
J'ai le problème suivant :
au login, le contenu d'un .sh qui est sourcé dans le .profile passe en ligne de commande. (sourcé comme suit : . lib.sh ) Résultat, le fichier d'historique se remplit et écrase les information précédentes. supposons que dans le .sh on ai : #!/bin/sh ma_fonction(){ moncode } Dans le fichier historique on aura : moncode } \202^C\201 Je ne comprend pas ce qui se passe. D'autant plus que j'ai un autre système "sensé" être identique qui ne pose pas de problème. Je n'ai pas encore trouvé la différence entre les deux. |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() |
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : septembre 2009 Messages : 10 ![]() |
Merci pour cette piste.
Effectivement il n'y a pas de ";" à la fin des fonction, cependant, une fois ajoutés ça ne change rien. Ce qui m'intrigue le plus, c'est qu'au moment du source, HISTFILE et les autres variables concernant l'historique ne sont pas initialisées (elles le sont à la fin du ".profile" et le source est au début du ".profile"). Si je met "HISTFILE=/dev/null" je peux garder mon historique mais dans ce cas, je n'ai plus d'historique tant que je ne suis pas revenu en bash. Je n'ai malheureusement pas les connaissances nécessaires pour trouver des pistes par moi même. |
|
|
00
|
|
|
#4 | |
|
Membre Expert
![]() frederic frances Inscription : juin 2009 Messages : 1 693 ![]() |
Citation:
je ne me souviens pas que sh supporte les fonctions (contrairement à ksh). ou je dit une bêtise. |
|
|
|
00
|
|
|
#5 | ||
|
Membre Expert
![]() |
Vu le lien que j'ai mis, il semble bien accepter les fonctions, mais j'avoue ne pas me servir de sh tous les jours
Tu as essayé de définir ta fonction comme cela: Code :
regarde ici aussi : http://www.compuspec.net/reference/s...function.shtml |
||
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : septembre 2009 Messages : 10 ![]() |
Je ne pense pas que ça vienne d'un problème à la définition des fonctions, elles marchent bien.
Je pense plutôt à un fonctionnement "normal" mais incompris. Et donc je ne sais pas comment le contourner ne comprenant pas d'où viens le problème. (je suis bien en ksh) |
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() |
Ben si tu as ça :
au début de ton script, tu es en .sh |
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() frederic frances Inscription : juin 2009 Messages : 1 693 ![]() |
sous ksh la commande history se fait avec fc si je me souviens bien.
|
|
|
00
|
|
|
#9 | |
|
Membre Expert
![]() Inscription : juin 2007 Messages : 911 ![]() |
Citation:
|
|
|
|
00
|
|
|
#10 | |
|
Membre Expert
![]() Inscription : juin 2007 Messages : 911 ![]() |
Citation:
Sur les dernières versions de ksh, c'est "hist -l" au lieu de "fc -l". |
|
|
|
00
|
|
|
#11 | |
|
Membre Expert
![]() frederic frances Inscription : juin 2009 Messages : 1 693 ![]() |
Citation:
ceci dit j'ai déjà vu plusieurs machines d'installation récente (des solaris notament) ou history n'etait pas reconnu comme commande, contrairement a fc. |
|
|
|
00
|
|
|
#12 |
|
Invité de passage
![]() Inscription : septembre 2009 Messages : 10 ![]() |
Pour en revenir au problème, je pense que la question c'est comprendre comment marche le source d'un fichier. Visiblement il passe le contenu du fichier en ligne de commande.
J'ai trouvé un moyen tout bête de contourner le problème (je sauve mon fichier historique avant et le recopie après) mais ça n'explique pas ce qui se passe. Par contre, j'ai bien l'impression que mon .profile est lu 3 fois, certainement la piste à explorer. |
|
|
00
|
|
|
#13 | |
|
Membre Expert
![]() Inscription : juin 2007 Messages : 911 ![]() |
hist est un alias de fc sur les ksh récents.
Citation:
|
|
|
|
00
|
|
|
#14 | |||
|
Membre Expert
![]() frederic frances Inscription : juin 2009 Messages : 1 693 ![]() |
Citation:
j'ai déjà vu des station ou quand tu lançais history cela te renvoyais command not found. après je ne vais pas généraliser sur toutes les installations de la terre, je parle simplement d'une expérience personnelle. sur cette machine a 2/3 ans tout au plus, history est un alias sur fc et non sur hist comme l'indique la norme ksh93. Citation:
http://www.research.att.com/sw/downl.../man1/ksh.html Citation:
Dernière modification par jabbounet ; 15/09/2009 à 10h22. |
|||
|
|
00
|
|
|
#15 |
|
Membre Expert
![]() Inscription : juin 2007 Messages : 911 ![]() |
Oui. fc est à la fois une commande externe et une builtin. Si tu n'est pas en ksh, history ne marche pas mais fc marche toujours. Le problème est que l'historique n'est pas mis à jour.
Pour la question initiale, oui la commande "." source le fichier. Elle est strictement équivalente à la saisie au clavier du contenu du fichier et donc son exécution par le shell courant, contrairement à un script classique qui lance un autre shell pour être exécuté. |
|
|
00
|
|
|
#16 |
|
Membre Expert
![]() |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com