Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Obecná podpora => Téma založeno: alfonz19 13 Února 2013, 22:03:20

Název: [VYŘEŠENO] exportování proměnné.
Přispěvatel: alfonz19 13 Února 2013, 22:03:20
Ahoj,

pokud v .bashrc napíšu
Kód: [Vybrat]
export A=1
a spustím nový bash, proměnná bude přístupná.
Pokud v .bashrc napíšu
Kód: [Vybrat]
./testExporta vytvořím soubor testExport takto:
Kód: [Vybrat]
#!/bin/bash
export B=2
a otevřu nový shell, pak proměnná B bude nedefinovaná.

Mám pocit, že jsem to NĚJAK kdysi zprovoznil, ale nevím kde mám teď chybku. Anebo se pletu a nemohlo to fungovat nikdy?
EDIT: práva pro spuštění testExport jsou přidělena.
Název: Re:exportování proměnné.
Přispěvatel: Martin Kiklhorn 14 Února 2013, 04:51:39
./testExport je relativní cesta, asi bych ji nepoužíval
pokud se jedná jen o export tak bych ho tam napsal přímo
Název: Re:exportování proměnné.
Přispěvatel: alfonz19 14 Února 2013, 09:14:48
Snažil jsem se o maximálně snadný popis problému. rozeberu to.

v .bashrc mám absolutní cesty, spouštěný skript vezme zvolený adresář (adresář, který obsahuje strukturu s různými skripty), projde je, najde všechny podadresáře a přidá je na PATH. Smyslem je mít možnost selektivně přidat nějakou množinu skriptů na path (proto je jejich přidání v samostatném skriptu) a nemít bordel v .bashrc.

částečně to "funguje" a mám pocit, že dříve to fungovalo komplet. Problém je v tom, že volaný skript exportuje PATH, když ji pak vypíšu je korektní, ale nastartování bashe je PATH opět v původním stavu.

napadá mne možná kolize např. s /etc/profile. V jakém pořadí se spouští tyto skripty při startu nového bashe? Nebo napadá někoho jiný důvod pro toto chování?
Název: Re:exportování proměnné.
Přispěvatel: beer 14 Února 2013, 16:15:49
A kdyby se nahradilo

./testExport

za

~/testExport nebo za /home/user/testExport?
Název: Re:exportování proměnné.
Přispěvatel: alfonz19 15 Února 2013, 09:08:39
v úvodním textu jsem se snažil o maximální stručnost.
ve skutečnosti tam mám absolutní cestu.
skript se volá.
po nastartování bashe ovšem proměnná, která těsně před jeho koncem byla nastavena a exportována, nastavena opět není.
Název: Re:exportování proměnné.
Přispěvatel: petergula 15 Února 2013, 14:10:13
v úvodním textu jsem se snažil o maximální stručnost.
ve skutečnosti tam mám absolutní cestu.
skript se volá.
po nastartování bashe ovšem proměnná, která těsně před jeho koncem byla nastavena a exportována, nastavena opět není.
Co ja viem, tak nie je mozne z podriadeneho shellu nastavovat premennu platnu pre rodica.
Název: Re:exportování proměnné.
Přispěvatel: ntz_reloaded 15 Února 2013, 14:16:33
a) include souboru se dela pomoci prikazu ".", tedy potrebujes:

Kód: [Vybrat]
. $jmeno_souboru
b) pokud spustis soubor via:
Kód: [Vybrat]
./$jmeno_souboru
a forknes dalsi /bin/bash, tak je jasne, ze rodic nevidi do jeho @ENV
Název: Re:exportování proměnné.
Přispěvatel: alfonz19 15 Února 2013, 18:58:48
ANO!

Ježiši marjá, děkuju, já jsem trubka. Tuhle konstrukci (include) jsem sice naivně znal, ale nedocházely mi všechny rozdíly a že v mém volání dojde k forku a tedy to takto nemohu použít mi nedošlo.

DÍKY MOC!