[BASH] 3 petites questions

Fermé
styvea Messages postés 34 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 12 juillet 2011 - 12 juil. 2011 à 10:37
styvea Messages postés 34 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 12 juillet 2011 - 12 juil. 2011 à 13:42
Bonjour à tous,

voici mon problème :

J'aimerai faire un miniscript permettant de placer quelques variables d'environnement, puis d'effectuer quelques commandes GCC.
J'ai donc 3 petites questions.

la première est :
Est il mieux de faire mes commandes gcc directement telles quelles dans le script ? ou de faire un makefile et de l'appeler à partir de mon script?

deuxième question :
Voici à quoi ressemble la partie concernant les variables à placer :

#!/bin/bash

#set -x

# env

export PKG_CONFIG_PATH=/home/styve/Project/
export LD_LIBRARY_PATH=/home/styve/Project/lib


gcc xxx...
gcc xxx...



Donc rien de bien transcendant..hélas lorsque je lance mon script, les export ne sont pas pris en compte.. cela est-il normal? je suis à chaque fois obligé de les lancer à la main.

Et enfin :
toujours concernant mes exports, lorsque je configure mon LD_LIBRARY_PATH à :


LD_LIBRARY_PATH=:/usr/local/lib:~/Project/lib/



cela ne marche pas, je suis obligé de mettre le chemin en dur pour que mon code fonctionne.. cela est-il normal? car ça me dérange un peu beaucoup..

Merci à ceux qui pourront m'aider !



A voir également:

3 réponses

Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
12 juil. 2011 à 11:22
salut.
Je pense qu'un makefile c'est mieux, ça évite de tout recompiler, ce qui est appréciable si le projet est gros.
les export ne sont pas pris en compte.. cela est-il normal? je suis à chaque fois obligé de les lancer à la main je ne comprend pas bien cette phrase, détail un peu.

Pareil pour ta dernière question. Donne un exemple.
0
styvea Messages postés 34 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 12 juillet 2011 2
12 juil. 2011 à 11:27
Merci de ta réponse Snipeur :)

Pour ce qui est des export, en fait lorsque je fais un script avec :

export LD_LIBRARY_PATH=/home/styve/Project/lib
echo $LD_LIBRARY_PATH

celà m'affiche :

/home/styve/Project/lib

Mais lorsqu'ensuite dans mon terminal je fais "env", j'obtiens :

LD_LIBRARY_PATH=:/usr/local/lib:~/Project/lib/


En gros mon script n'a pas été pris en compte.. je ne sais pas si c'est plus clair :s

Pour ma dernière question, en fait j'ai mon programme.
Lorsque mon LD_LIBRARY_PATH (utile à mon programme) est configuré comme :

:/usr/local/lib:~/Project/lib/

cela ne marche pas.
Je suis obligé de mettre :

/home/styve/Project/lib

est-ce normal? le LD_LIBRARY_PATH ne peut prendre qu'un seul chemin?
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
12 juil. 2011 à 12:10
Ok, c'est ce que je pensais... Il faut savoir que par défaut, les scripts s'exécute dans un "sous-shell" c'est à dire qu'un nouveau bash est lancé et qu'il traite toutes tes commandes. Donc les variables modifiées sont propres à ce sous-shell. Une solution pour conserver les variables modifier dans le script est d'utiliser "source" : $ source ./script.sh
Le LD_LIBRARY_PATH peut tout à fait prendre plusieurs répertoires. Là je ne sais pas, je fait deux hypothèses : soit il n'aime pas le tilde ~, soit il n'aime pas les deux points ":" en début de chaine.
Sinon, marque nous les erreurs pour voir.
0
styvea Messages postés 34 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 12 juillet 2011 2
Modifié par styvea le 12/07/2011 à 13:50
Ah très bien, merci pour l'info, je ne savais absolument pas cela !
Et je connaissais encore moins la commande source.. et bien je vais utiliser cela dans ce cas :)

Pour ce qui est du LD_LIB_PATH, merci beaucoup !!
En enlevant les : et le ~ et en remplaçant par ce qu'il faut, ça marche nickel !

Merci de ton aide ;)
0