[BASH] 3 petites questions
styvea
Messages postés
36
Statut
Membre
-
styvea Messages postés 36 Statut Membre -
styvea Messages postés 36 Statut Membre -
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 :
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 à :
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 !
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 !
3 réponses
-
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. -
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? -
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.-
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 ;)
-