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 29/12/2006, à 02:06

gene69

bash vs sh

lorsque je fais ça dans le terminal, ça marche.

echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/home/svn/projets/
$NAME=:/home/svn/projets/
$ echo ${PATH//$NAME/}
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11
$ echo echo ${PATH//$NAME/}
echo /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11
$ echo `echo ${PATH//$NAME/}`
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11

pourquoi ça marche pas quand j'essaie de faire la même chose dans un script sh ?

question subsidiaire, comment on fait en sh?

comment on fait pour verifier si l'interpréteur est bash?(puisque mes commandes ne marcheront pas sinon)
j'ai bien tenté de tester $0 mais elle contient pas "sh" lorsque je lance "sh mon/script"  ($0 contient "mon/script")
Merci


Quand le berger est lâche, le loup chie de la laine.
A (draft) guide to UFO Alien-Invasion

Hors ligne

#2 Le 29/12/2006, à 03:18

gwenchlan-eire

Re : bash vs sh

echo est une commande qui est restée très floue avec la norme posix... avec des résultats baroques selon les interpréteurs.

Pour connaitre le nom du shell :

echo $SHELL

(standard posix)
qui renvoie :
/bin/bash
ou
/bin/sh
ou
/usr/bin/ksh93
etc...

Hors ligne

#3 Le 29/12/2006, à 03:36

gene69

Re : bash vs sh

thanks

edit: ne marche pas. la variable d'environnement n'est pas modifiée si j'exécute un script dans sh ou dans bash.

Dernière modification par gene69 (Le 29/12/2006, à 03:44)


Quand le berger est lâche, le loup chie de la laine.
A (draft) guide to UFO Alien-Invasion

Hors ligne

#4 Le 29/12/2006, à 04:05

gene69

Re : bash vs sh

bon j'ai rajouté ça au début du fichier. Mais si jamais il y a un builtin qui permet de connaitre si l'interpréteur qui s'execute est bash ou pas.. j'achète smile

if [ "$1" != "with_bash" ] ; then
	bash  $0 with_bash
	exit $?
fi

Quand le berger est lâche, le loup chie de la laine.
A (draft) guide to UFO Alien-Invasion

Hors ligne

#5 Le 29/12/2006, à 15:11

gapz

Re : bash vs sh

À noter aussi que sh est un lien symbolique vers un autre interpréteur la plupart du temps, à savoir Dash sous Edgy et Bash sous les autres versions d'Ubuntu.

Sinon, $SHELL indique l'interpréteur utilisé par défaut je crois.


Real programmers code in binary :: http://gapz.tuxfamily.org

Hors ligne

#6 Le 29/12/2006, à 15:20

Luc Hermitte

Re : bash vs sh

Pourquoi tu n'utilises pas le shebang pour forcer à utiliser l'interpréteur qui convient à l'interprétation de ton script ?

#7 Le 30/12/2006, à 00:40

gene69

Re : bash vs sh

le shebang ne marche pas lorsque j'invoque le script avec "sh mon/script" ce que j'ai coutume de faire...
je répète que dans ce cas la variable d'environnement $SHELL ne sert à rien.

sinon je suis d'accord que le shebang est une excellente chose d'on j'ai compris l'utilité il n'y a pas longtemps.


Quand le berger est lâche, le loup chie de la laine.
A (draft) guide to UFO Alien-Invasion

Hors ligne

#8 Le 30/12/2006, à 02:56

Luc Hermitte

Re : bash vs sh

gene69 a écrit :

a- le shebang ne marche pas lorsque j'invoque le script avec "sh mon/script" ce que j'ai coutume de faire...
b- je répète que dans ce cas la variable d'environnement $SHELL ne sert à rien.

c- sinon je suis d'accord que le shebang est une excellente chose d'on j'ai compris l'utilité il n'y a pas longtemps.

a- Quelle drôle d'idée. Entre les scripts perl, les bash, les ksh, les sh, ... je ne m'en sortirais plus à devoir toujours spécifier l'interpréteur

b- Normal. C'est prendre le problème à l'envers. Un script est toujours écrit pour un interpréteur donné (généralement toujours installé au même endroit sur des systêmes bien administrés). Se planter d'interpréteur, c'est exactement comme se planter de compilo ou d'OS.

c- Va plus loin et accepte les /chemin/vers/ton/script, tellement plus simple.

d- Au pire, si tu veux persister dans cette étrange voie, tu as essayé les man de bash, sh, ksh, ... pour déterminer des options qui leur sont propres, même si seules les valeurs d'une option leur sont propres.

Une solution très tordue peut-être. Obtenir le PID du script (et événtuellement remonter jusqu'au parent) pour savoir qui l'interprète.

#9 Le 30/12/2006, à 19:37

gwenchlan-eire

Re : bash vs sh

En tête du script, si tu veux bash, tu écris :

#!/bin/bash

et pour exécuter le script : ./script
Beaucoup plus simple, pour toi et si tu diffuses

Hors ligne

#10 Le 30/12/2006, à 20:51

gene69

Re : bash vs sh

@gwenchlan-eire
c'est ce qu'on appelle le shebang si j'ai bien compris.

oui j'ai une étrange manie... mais j'appelle presque toujours mes scripts avec sh parce que... et sutout parce parfois (souvent) j'oublie de mettre le bit d'execution.

affaire close je pense. Sauf si quelqu'un connait quelquechose pour savoir quel est le nom de l'interpréteur au vol.


Ps: j'y ai pensé à faire un ps. mais ça me demande trop de traitements compliqués pour mon niveau.

Dernière modification par gene69 (Le 30/12/2006, à 20:52)


Quand le berger est lâche, le loup chie de la laine.
A (draft) guide to UFO Alien-Invasion

Hors ligne

#11 Le 01/01/2007, à 15:14

lunique

Re : bash vs sh

Et si tu utilisait "bash ton_script" sa resoudrait pas tout tes probleme ?

Hors ligne