Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 27/09/2008, à 10:27

Pablo_de_Taix

[RESOLU] Comment mettre à jour le comportement de "bash" ?

Bonjour à tous.
Pourquoi cette demande ? j'ai 2 pc sous Ubuntu 8.04 (un Anglais, un Français)
les 2 en version 8.04 et Gnome

un script qui contient des if then.. par comparaison de chaine de caractères s'éxecute trés bien sur l'un pas du tout sur l'autre.
Le pc qui m'embete considère même les lignes blanches comme des erreurs à l'execution.

Donc comment savoir la version shell ou bash installée et comment la mettre à jour ?
Est ce que vous auriez des conseils de chargement ou changement de bash ?
il semble qu'il y ait bcp de choix ! lequel faire ?

Merci de m'aider.

Dernière modification par Pablo_de_Taix (Le 04/10/2008, à 09:51)

Hors ligne

#2 Le 27/09/2008, à 11:22

Dark-Sham

Re : [RESOLU] Comment mettre à jour le comportement de "bash" ?

echo $SHELL

Pour vérifier si Bash est bien le shell utilisé

bash --version

Pour la version de Bash.


Script de sauvegarde/restauration APT

Ubuntu 8.04 "Hardy Heron"
CPU : AMD Athlon XP 2800+ ; GPU : ATI Radeon 9250/9200 Series ; RAM : 2 Gigots + 512 Mégots ; Carte mère : Asus A7N8X-E Deluxe

Hors ligne

#3 Le 27/09/2008, à 11:56

Pablo_de_Taix

Re : [RESOLU] Comment mettre à jour le comportement de "bash" ?

merci ok,
test de suite. sur 1 des 2 pc car l'autre n'est pas à portée de main
mais il y des "sh" etc... et par votre exp lequel serait à choisir pour être "complet" et relativement stable ?
j'ai deja observé des différence entre celui de Ub et de Fedora 7.
différences de comportements et de syntaxe. mais je sais pas si c'est pas si ce son des différences de version, ou de soft!

Hors ligne

#4 Le 27/09/2008, à 12:00

Pablo_de_Taix

Re : [RESOLU] Comment mettre à jour le comportement de "bash" ?

le pc qio exécute bien les scripts me renvoie
pour le shell:
/bin/bash
pour la version:
GNU bash, version 3.2.39(1)
merci Dark-Sham
comment (si la version est différente sur l'autre pc ce dont je ne doute plus)
l'obliger a prendre cette version par exemple ?

Hors ligne

#5 Le 30/09/2008, à 17:35

Pablo_de_Taix

Re : [RESOLU] Comment mettre à jour le comportement de "bash" ?

Si quelqu'un a la meme version...
et s'il faisait un test de If then else en bash ...
cela me rendrait service (en indiquant son editeur de texte)
car sur mon pc il faut que je mette en "espace" aprés les mots if,then else et fi, meme s'ils ne sont pas sur la meme ligne pour qu'il les reconnaisse à l'éxécution.
UB 8.0.4 Gnome / Bash 3.2.39
Ps le probleme a lieu sur la version fr et us.
Bonne soirée à tous.

Hors ligne

#6 Le 01/10/2008, à 06:49

Dark-Sham

Re : [RESOLU] Comment mettre à jour le comportement de "bash" ?

if [ $SHELL = `which bash` ]
then echo "Bash installé et activé"
else echo "Bash non activé"
fi

Je pense que ça devrait fonctionner wink


Script de sauvegarde/restauration APT

Ubuntu 8.04 "Hardy Heron"
CPU : AMD Athlon XP 2800+ ; GPU : ATI Radeon 9250/9200 Series ; RAM : 2 Gigots + 512 Mégots ; Carte mère : Asus A7N8X-E Deluxe

Hors ligne

#7 Le 01/10/2008, à 13:41

Pablo_de_Taix

Re : [RESOLU] Comment mettre à jour le comportement de "bash" ?

ALORS LA !!!!!! Bravo, félicitations etc etc
Dark_Sham tu as gagné ! mon zouave de pc réponds "Bash Not Installed"
je comprend pas tout, car il me renvoyait bien /bin/bash a la demande de version !
Reste a activer Bash... je vais faire un tour sur le forum et la doc.
A+

Hors ligne

#8 Le 01/10/2008, à 15:37

Pablo_de_Taix

Re : [RESOLU] Comment mettre à jour le comportement de "bash" ?

bon, rien trouvé pour l'activer ou changer de version.
apt-get me répond que tt est là et n'a rien a faire de mieux !
er rien trouvé sur les forums a ce sujet là.
A+

Dernière modification par Pablo_de_Taix (Le 01/10/2008, à 16:38)

Hors ligne

#9 Le 02/10/2008, à 11:46

BorX

Re : [RESOLU] Comment mettre à jour le comportement de "bash" ?

Dark-Sham a écrit :
if [ $SHELL = `which bash` ]
then echo "Bash installé et activé"
else echo "Bash non activé"
fi

Je pense que ça devrait fonctionner wink

Attention !
Chez moi :

$ if [ $SHELL = `which bash` ]
then echo "Bash installé et activé"
else echo "Bash non activé"
fi
Bash non activé

En effet :

$ echo $SHELL
/bin/bash

$ echo $(which bash)
/usr/bin/bash

Et pour cause :

$ ls -li $SHELL $(which bash)
3659174697489190 -rwxrwx---+ 1 bklymko mkgroup-l-d 470528 Jan  4  2008 /bin/bash
3659174697489190 -rwxrwx---+ 1 bklymko mkgroup-l-d 470528 Jan  4  2008 /usr/bin/bash

Autrement dit, $SHELL est différent de which bash, mais il s'agit pourtant des mêmes fichiers (hardlinks) !

Très souvent, les exécutables bash, sh, etc... sont des liens, symboliques ou pas, vers des fichiers similaires...

Dernière modification par BorX (Le 02/10/2008, à 11:47)

Hors ligne

#10 Le 02/10/2008, à 13:31

Pablo_de_Taix

Re : [RESOLU] Comment mettre à jour le comportement de "bash" ?

Bon alors là Borx, il va falloir s'il te plait expliquer à un ignare comme moi !
je comprend plus, moi qui pensait "arriver" à la soluce ! perdu de nouveau....
merci d'essayer de me mettre sur la voie.
Pablo

Hors ligne

#11 Le 02/10/2008, à 13:59

BorX

Re : [RESOLU] Comment mettre à jour le comportement de "bash" ?

En fait, je ne réponds pas vraiment à ta question concernant la version de bash...

Je dis seulement que le fait que la variable d'environnement $SHELL soit différente du résultat retourné par "which bash" ne signifie pas forcément que tu n'es pas sous bash...

[petit cours sur les liens]
créons un lien symbolique :
Voyons où est l'exécutable d'un ls :

$ which ls
/usr/bin/ls

Faisons maintenant un lien symbolique vers cet exécutable :

$ ln -s /usr/bin/ls pouette
$ ls -l pouette 
lrwxrwxrwx 1 bklymko mkgroup-l-d 15 Oct  2 14:31 pouette -> /usr/bin/ls

Bien on a un fichier qui "pointe vers le fichier /usr/bin/ls
Le modifier, c'est modifier le fichier vers lequel il pointe. L'exécuter, c'est exécuter le fichier vers lequel il pointe :

$ ./pouette -l pouette
lrwxrwxrwx  1 bklymko mkgroup-l-d 15 Oct  2 14:31 pouette -> /usr/bin/ls

Supprimer ce lien symbolique n'aura aucune incidence sur sa cible. En revanche, supprimer la cible rend le lien symbolique inutilisable...

Supprimons ce lien symbolique, et créons maintenant un lien, un vrai de vrai, un hardlink (par opposition à symlink pour lien symbolique) :

$ rm pouette
$ ln /usr/bin/ls pouette
$ ls -l pouette
-rwxrwx---+ 2 bklymko mkgroup-l-d 122368 Jan 24  2008 pouette

Ah ! C'est fois, c'est un vrai fichier !
Je peux l'exécuter :

$ ./pouette -l pouette
-rwxrwx---+ 2 bklymko mkgroup-l-d 122368 Jan 24  2008 pouette

etc...

Mais quand on regarde de plus près, en faisant un ls avec l'option i (pour i-node) :

$ ls -il pouette     
1970324837225421 -rwxrwx---+ 2 bklymko mkgroup-l-d 122368 Jan 24  2008 pouette

Je vois un numéro...
Faisons maintenant la même chose avec l'exécutable ls :

$ ls -il /usr/bin/ls
1970324837225421 -rwxrwx---+ 2 bklymko mkgroup-l-d 122368 Jan 24  2008 /usr/bin/ls

Le numéro de noeud est le même...
Ce qui signifie que pouette et ls sont deux fichiers indépendants, mais ils pointent tous les deux sur le même noeud, sur la même zone du disque, si tu préfères.
Autrement dit, c'est la même chose !
La seule différence, c'est que supprimer l'un ne supprime pas l'autre : supprimer l'exécutable de ls laissera pouette fonctionnel...
[/petit cours sur les liens]

Tout ça pour dire que si $SHELL et "which bash" renvoie des valeurs différentes, cela ne signifie pas que bash n'est pas actif. Au contraire, tu peux te contenter de ce que te retournes $SHELL pour considérer que bash est actif.
Regarde d'un peu plus près le fichier que désignent $SHELL et "which bash". Même si les valeurs sont différente, il est (très) probable qu'elles reviennent au même...
Lance la commande suivante pour voir ce qu'il en est

$ ls -li $SHELL $(which bash)

Il y a de forte chance pour que le résultat soit ça :

3659174697489190 -rwxrwx---+ 1 bklymko mkgroup-l-d 470528 Jan  4  2008 /bin/bash
3659174697489190 -rwxrwx---+ 1 bklymko mkgroup-l-d 470528 Jan  4  2008 /usr/bin/bash

ou un truc comme ça :

5640649804654086 lrwxrwxrwx+ 1 bklymko mkgroup-l-d 470528 Jan  4  2008 /bin/bash -> /usr/bin/bash
3659174697489190 -rwxrwx---+ 1 bklymko mkgroup-l-d 470528 Jan  4  2008 /usr/bin/bash

Fin de la parenthèse sur les liens, sinon on va vraiment sortir du sujet wink

Pour ton histoire de script qui se galère avec les espaces, je pense qu'il s'agit plus d'une histoire de variable d'environnement... Mais je n'ai pas la réponse...

Hors ligne

#12 Le 02/10/2008, à 15:21

Nerach

Re : [RESOLU] Comment mettre à jour le comportement de "bash" ?

Petite note au passage :

~$ if [ $SHELL = `which bash` ]
> then echo "Bash installé et activé"
> else echo "Bash non activé"
> fi
Bash installé et activé

Tandi que :

~$ if [ $SHELL = 'which bash' ]
> then echo "Bash installé et activé"
> else echo "Bash non activé"
> fi
Bash non activé

Bref, attention au backquote ` ALT-GR + 7 sur un clavier fr.

Hors ligne

#13 Le 02/10/2008, à 15:58

HP

Re : [RESOLU] Comment mettre à jour le comportement de "bash" ?

bref, ne pas utiliser une syntaxe dépréciée (backquote) et peu pratique, la preuve en est…

Dernière modification par HP (Le 02/10/2008, à 15:58)


cat /dev/urandom >/dev/null 2>&1 #github

Hors ligne

#14 Le 02/10/2008, à 17:39

Pablo_de_Taix

Re : [RESOLU] Comment mettre à jour le comportement de "bash" ?

bon ok, merci à tous.
merci pour le rappel pour les liens.
et pour les ' aussi....
mais ça m'inquiete pour le probleme de fond.
qui est un non reconnaissance des mots clefs , script de déroulement douteux sous UB+Gnome (script écrit sous Gedit) alors que le coper coller
le rend parfaitement sain (le script) sous Fedora 7......
je suis coincé.
Merci a tous pour vos précisions, forte utiles à l'avenir.

Hors ligne

#15 Le 02/10/2008, à 17:43

BorX

Re : [RESOLU] Comment mettre à jour le comportement de "bash" ?

et... un copier/coller sur la même machine ? big_smile
(j'avoue que je croyais fermement au dos2unix qu'on t'avait conseillé)

Hors ligne

#16 Le 02/10/2008, à 18:20

Pablo_de_Taix

Re : [RESOLU] Comment mettre à jour le comportement de "bash" ?

Copier coller sur la meme machine ??????? hmm

Hors ligne

#17 Le 02/10/2008, à 19:39

BorX

Re : [RESOLU] Comment mettre à jour le comportement de "bash" ?

Pablo_de_Taix a écrit :

Copier coller sur la meme machine ??????? hmm

Pablo_de_Taix a écrit :

script de déroulement douteux sous UB+Gnome (script écrit sous Gedit) alors que le coper coller
le rend parfaitement sain (le script) sous Fedora 7......

au lieu de faire un copier sous UB+Gnome et un coller sous Fedora 7
tu fais un copier sous UB+Gnome et un coller sous UB+Gnome... tongue

Je propose ça comme ça big_smile
Il y a de forte chance pour que ce soit un problème d'encodage de fichier (c'est pourquoi j'espérais que le dos2unix fasse quelque chose)...

Mais personnellement, la version de bash, j'y crois pas vraiment...
Je bosse parfois sur des machines un peu vieillottes aux systèmes assez anciens, et je rencontre certes quelques incompatibilités (du style grep qui n'a pas telle option, ou des comportements différents avec les retours à la ligne), mais la syntaxe en tant que telle, elle change rarement...
A la limite, on trouve des différences notables en passant de bash à ksh ou des trucs dans le genre, d'où le fait de s'assurer que ton bash est bien un bash... mais, à mon avis, c'est vraiment pour le principe, car le problème doit venir d'ailleurs...

Dernière modification par BorX (Le 02/10/2008, à 19:41)

Hors ligne

#18 Le 02/10/2008, à 20:29

Pablo_de_Taix

Re : [RESOLU] Comment mettre à jour le comportement de "bash" ?

Merci Borx, oui en effet j'ai pensé à un pb d'encodage. une sorte de mauvaise codif des fins de lignes/retour chariot( LF/CR). les 2 pc sous UB 8.0.4 ont 3 mois de fonctionnement, tout le reste "nickel" radius, apache mysql etc...
les scripts c'est la panique!  mais la synchro des pc W2K UB nickel. (je ne me souviens plus sur quel logiciel et pc j'ai écris les scripts de synchro (faute !))
là je suis vraiment entre 2 bécanes 1 ub et 1 F7. et sincèrement depuis pres de 25ans d'info. je décroche... un script tout simple copié/collé d'un exemple d'un confrére dans ce forum suite à mes questions, ne passe passur Ub et impec sous F7, obligé de taper "des espaces" à la fin des mots 'if' 'then' 'else' et ça passe pas toujours.. vraiment tu as raison je pense à un pb d'encodage.
j'ai pris le script "salé" du PC UB qui en veut pas. je le copie sur F7 (qui a un an d'existence) je modifie les chemins dans le scripts pour F7, en mode test pour ne pas générer d'erreur grossière et il tourne impeccable, c'est bien Ub qui en veut pas
d'ou mes questions sur les versions de "bash" etc...
ce qui m'étonne, c'est que la moindre "ligne blanche" donc CRLF en fin de ligne sans # au début, Ub l'interprete comme une erreur de commande !
si l'un de vous a une idée, je suis vraiment preneur, pas trop tenté de réinstaller UB+Mysql+Radius+snmp+nagios etc et de tout recoller dessus ... sourire...
il y a un pb et je ne vois vraiment pas lequel !
Merci à tous de m'avoir aidé.
si l'un de vous a une idée je suis vraiment mais alors vraiment preneur.

Hors ligne

#19 Le 02/10/2008, à 23:29

BorX

Re : [RESOLU] Comment mettre à jour le comportement de "bash" ?

Moi aussi je suis preneur tongue
Ce problème m'intrigue, et c'est peut-être même trois fois rien !

Faites tourner vos idées ! big_smile

Dernière modification par BorX (Le 02/10/2008, à 23:29)

Hors ligne

#20 Le 02/10/2008, à 23:48

BorX

Re : [RESOLU] Comment mettre à jour le comportement de "bash" ?

Pablo_de_Taix,
Juste dans le doute, tu peux nous balancer ce que renvoie la commande suivante sous ton UB et sous ta F7 ?

locale

Dernière modification par BorX (Le 02/10/2008, à 23:48)

Hors ligne

#21 Le 03/10/2008, à 10:01

Pablo_de_Taix

Re : [RESOLU] Comment mettre à jour le comportement de "bash" ?

voilà le résultat de "locale"

LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

voilà voilà voilà ....
à l'écoute de vos idées.

Hors ligne

#22 Le 03/10/2008, à 10:04

BorX

Re : [RESOLU] Comment mettre à jour le comportement de "bash" ?

Et t'as la même chose sur tes deux postes (UB et F7) ?

Hors ligne

#23 Le 03/10/2008, à 10:23

Pablo_de_Taix

Re : [RESOLU] Comment mettre à jour le comportement de "bash" ?

Houps ..... sous F7 ....plutot "FR"......

voici :

LANG=fr_FR
LC_CTYPE="fr_FR"
LC_NUMERIC="fr_FR"
LC_TIME="fr_FR"
LC_COLLATE="fr_FR"
LC_MONETARY="fr_FR"
LC_MESSAGES="fr_FR"
LC_PAPER="fr_FR"
LC_NAME="fr_FR"
LC_ADDRESS="fr_FR"
LC_TELEPHONE="fr_FR"
LC_MEASUREMENT="fr_FR"
LC_IDENTIFICATION="fr_FR"
LC_ALL=

bon si je te comprend bien.. je met tout à fr_FR sous Ub ?
but how ?

Hors ligne

#24 Le 03/10/2008, à 10:37

BorX

Re : [RESOLU] Comment mettre à jour le comportement de "bash" ?

C'est pas mon fort, l'encodage des fichiers hmm
http://planet.ubuntu-fr.org/post/2007/06/01/Ajouter-lencoding-IS0-8859-1-et-ISO-8859-15

Hors ligne

#25 Le 03/10/2008, à 10:50

Pablo_de_Taix

Re : [RESOLU] Comment mettre à jour le comportement de "bash" ?

ok merci, j'ai suivi le lien.... je vais faire la manip !
réponse à suivre...

Hors ligne