Toon posts:

[bash] global exports

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik ben bezig met een scriptje om linux from scratch enigszins te automatiseren. In het het main install scriptje heb ik dit staan om wat enviroment variable aan te maken:
code:
1
2
3
4
5
# initialize global variable
  export LFSHD=/dev/hda1
  export LFS=/mnt/lfs
  export INSTALL=/LFS
  export LOG=/LFS/log/install.log

Maar echt globaal zijn ze zo niet, als het scriptje stopt en ik wederkeer in bash zijn deze variable weer weg (""). Hoe kan ik er voor zorgen dat ik een scriptje variable set die ook nog na de uitvoer ge-set blijven?

Verwijderd

nee, dit is naar mijn weten helaas niet mogelijk. elk process heeft zijn eigen environment, een script dus ook. environment variables dienen geexporteerd te worden, maar kunnen alleen geexporteerd worden naar de environment van het betreffende process (het script) zelf. het is niet toegestaan / mogelijk om variables door te geven aan parent processes of de environments daarvan. zodra het script dus gestopt wordt, zullen de environment variables gebruikt binnen dat script ook 'verdwijnen'...

Verwijderd

Topicstarter
jakkes

het probleem is dus, dat mijn scriptje een compile scriptje aanroept die weer make aanroept. Die make geeft wat rare errors. Ik weet het niet zeker, maar volgens mij komt dat dus doordat make niet op de hoogte is van de geëxporteerde variabelen en daardoor verkeerde locaties onder handen neemt.

Zou dat kunnen, of moet make de variabelen in dit geval wel overgenomen hebben. Een process aangeroepen vauit een script aangeroepen vanuit een ander script, hangt ie nog wel binnen de scope??

Verwijderd

kun je ze niet gewoon in /etc/profile zetten?

trouwens...lfs automatiseren? > http://alfs.linuxfromscratch.org/ Het is nog in ontwikkeling maar ze zijn al redelijk ver. Anders kun je altijd nog gentoo proberen, maar ik moet toegeven dat lfs leuker is.

Verwijderd

Op vrijdag 24 mei 2002 13:52 schreef unteraarsch het volgende:
jakkes

het probleem is dus, dat mijn scriptje een compile scriptje aanroept die weer make aanroept. Die make geeft wat rare errors. Ik weet het niet zeker, maar volgens mij komt dat dus doordat make niet op de hoogte is van de geëxporteerde variabelen en daardoor verkeerde locaties onder handen neemt.

Zou dat kunnen, of moet make de variabelen in dit geval wel overgenomen hebben. Een process aangeroepen vauit een script aangeroepen vanuit een ander script, hangt ie nog wel binnen de scope??
kijk, als je het zo uitlegt wordt het weer net iets anders. de environment van het script is namelijk wel beschikbaar voor child processes, dus voor programma's die door het script worden aangeroepen. denk bijvoorbeeld maar aan een bash environment. alle environment variables gedeclareerd in de environment van bash zijn ook beschikbaar voor de child processes die je aanroept vanuit bash (zoals een bash script), door de command in te typen op de command line van bash. make zou dus idd de variables gedeclareerd in het script moeten kunnen gebruiken, zolang make maar direct vanuit het script wordt aangeroepen.

  • aj-san
  • Registratie: Februari 2001
  • Laatst online: 14-01 08:34
Probeer maar eens . /pad/naar/bash/script.sh uit te voeren ;)

Don't try... do. Or do not. There is no try. -- Master Yoda


Verwijderd

Op vrijdag 24 mei 2002 14:55 schreef aj-san het volgende:
Probeer maar eens . /pad/naar/bash/script.sh uit te voeren ;)
source... hehe... die was ik even vergeten - dan kun je de variables idd wel doorzetten naar bash...

Verwijderd

Topicstarter
Op vrijdag 24 mei 2002 14:55 schreef aj-san het volgende:
Probeer maar eens . /pad/naar/bash/script.sh uit te voeren ;)
:? wil dit zeggen dat als je een script uitvoer en je zet er een punt voor dat het dan moet lukken ofzo... ik moet zeggen dat ik het een wat onduidelijke opmerking vind, maar ga 't wel ff proberen.

edit:
ik las het niet helemaal goed, maar het blijft vaag


JAAH, het werkt !!

  • aj-san
  • Registratie: Februari 2001
  • Laatst online: 14-01 08:34
Op vrijdag 24 mei 2002 15:03 schreef areana het volgende:

[..]

source... hehe... die was ik even vergeten - dan kun je de variables idd wel doorzetten naar bash...
areana heeft gelijk... '.' is gewoon een alias voor het source commando.

Voor de duidelijkheid in je scripts zou je dus het volgende kunnen gebruiken:
source /pad/naar/script.sh

Don't try... do. Or do not. There is no try. -- Master Yoda

Pagina: 1