Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

variable PATH dans des scripts

94 réponses
Avatar
Kevin Denis
Bonjour,

je suis en train de mettre à jour différents scripts afin de les
adapter à différents environnements.

De manière générale (et c'est une question plus large), je vois
souvent des scripts démarrer par une définition des binaires utilisés,
comme par exemple:
#! /bin/sh
LS=/bin/ls
WC=/usr/bin/wc
echo le nombre de fichier est `LS|WC`

Ma première question est la suivante, pourquoi utiliser une définition
littérale alors que l'on peut utiliser PATH?
#! /bin/sh
PATH=/bin:/usr/bin
echo le nombre de fichier est `ls|wc`

Ma seconde question, plus spécifique à mon cas, puisque selon
l'architecture les binaires sont dans des lieux différents:
Mieux vaut il faire
#! /bin/sh
PATH=/opt/bin:/bin etc..

ou bien:
#! /bin/sh
if [ test archi ] then
LS=/bin/ls
else
LS=/opt/bin/ls
fi

etc..

Merci.
--
Kevin

4 réponses

6 7 8 9 10
Avatar
Marc
Stephane CHAZELAS wrote:

Moi j'y lis mention de $PLATFORM.
[...]


Ca ressemble a uname -m


Si c'est le cas, il y a eu un loupé dans le passage solaris -> linux.
Sous solaris, c'est uname -i (qui malheureusement sous linux semble
renvoyer de façon assez uniforme : unknown).

Sous linux, pour sélectionner suivant les features supportées (ressemble
au $ISALIST de solaris, mais plus large, et automatique), on met les
bibliothèques dans un sous-repertoire tls/i686/sse2/cmov (par exemple) du
répertoire indiqué par ld.so.conf ou rpath ou LD_LIBRARY_PATH.



Avatar
Vincent Lefevre
Dans l'article <g210as$9al$,
Marc écrit:

Stephane CHAZELAS wrote:

Moi j'y lis mention de $PLATFORM.
[...]


Ca ressemble a uname -m


Si c'est le cas, il y a eu un loupé dans le passage solaris -> linux.
Sous solaris, c'est uname -i (qui malheureusement sous linux semble
renvoyer de façon assez uniforme : unknown).


Effectivement, une véritable valeur donnant une information utile
sur le hardware serait préférable.

Sous linux, pour sélectionner suivant les features supportées (ressemble
au $ISALIST de solaris, mais plus large, et automatique), on met les
bibliothèques dans un sous-repertoire tls/i686/sse2/cmov (par exemple) du
répertoire indiqué par ld.so.conf ou rpath ou LD_LIBRARY_PATH.


Sur ma machine Linux/x86_64, ce genre de chose ne semble pas
fonctionner: un strace indique que les sous-répertoires suivants
sont essayés pour chaque chemin:
_ tls/x86_64
_ tls
_ x86_64
_ .
i.e. pas de possibilité de distinguer les différents types de x86_64.

--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)




Avatar
Nicolas George
Vincent Lefevre wrote in message
<20080602175017$:
i.e. pas de possibilité de distinguer les différents types de x86_64.


Sauf erreur de ma part, il n'y a pas encore, du point de vue de gcc,
différents types de x86_64. Ce qui peux expliquer des choses.

Avatar
Vincent Lefevre
Dans l'article <48443663$0$24614$,
Nicolas George <nicolas$ écrit:

Sauf erreur de ma part, il n'y a pas encore, du point de vue de gcc,
différents types de x86_64. Ce qui peux expliquer des choses.


Je ne sais pas ce que tu entends exactement par là, mais la page man
de gcc 4.2.3 indique:

Intel 386 and AMD x86-64 Options

These -m options are defined for the i386 and x86-64 family of
computers:
[...]
nocona
Improved version of Intel Pentium4 CPU with 64-bit extensions,
MMX, SSE, SSE2 and SSE3 instruction set support.
[...]
k8, opteron, athlon64, athlon-fx
AMD K8 core based CPUs with x86-64 instruction set support.

Ça fait au moins deux (et il y en a encore plus dans la doc de GCC 4.3).

--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)

6 7 8 9 10