Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: [VYŘEŠENO] exportování proměnné.  (Přečteno 1277 krát)

alfonz19

  • Aktivní člen
  • *
  • Příspěvků: 219
[VYŘEŠENO] exportování proměnné.
« kdy: 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.
« Poslední změna: 15 Února 2013, 18:59:04 od alfonz19 »

Martin Kiklhorn

  • Člen občanského sdružení Ubuntu ČR a placené komunitní podpory
  • Administrátor fóra
  • Závislák
  • ******
  • Příspěvků: 4807
  • グーグル!ご存知ですか?
    • HEJ
Re:exportování proměnné.
« Odpověď #1 kdy: 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
Jsou ve vašem dotazu OPRAVDU VŠECHNY vám dostupné informace o problému?
Linux user since 2007-10-11, Registered #456007
Virtual
| Distribuce
~/slozka znamená /home/"vase jmeno"/slozka
6521 69DE 0F34 FCBC FB1D  DE76 360E 52B2 F71A B8E8

alfonz19

  • Aktivní člen
  • *
  • Příspěvků: 219
Re:exportování proměnné.
« Odpověď #2 kdy: 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í?

beer

  • Host
Re:exportování proměnné.
« Odpověď #3 kdy: 14 Února 2013, 16:15:49 »
A kdyby se nahradilo

./testExport

za

~/testExport nebo za /home/user/testExport?

alfonz19

  • Aktivní člen
  • *
  • Příspěvků: 219
Re:exportování proměnné.
« Odpověď #4 kdy: 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í.

petergula

  • Stálý člen
  • **
  • Příspěvků: 1016
Re:exportování proměnné.
« Odpověď #5 kdy: 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.
ntbk Dell 6420 (Amd Ati, Intel i7, 4GB RAM, 256GB SSD ...)
secondary/u svokrovcov:
Xubuntu (64bit) ntbk Asus A6Je (Ati X1450, Intel Core2Duo T5500, 2.5GB RAM ...)

ntz_reloaded

  • Lokaj
  • Závislák
  • ***
  • Příspěvků: 3735
  • skill :: ur home erly
Re:exportování proměnné.
« Odpověď #6 kdy: 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
tikejte mi, taky Vam tikam ...
song of the day - openSUSE, openindiana, DuckDuckGo
The noise ain't noise anymore, who's to blame, WHO'S TO BLAME ??

alfonz19

  • Aktivní člen
  • *
  • Příspěvků: 219
Re:exportování proměnné.
« Odpověď #7 kdy: 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!

 

Provoz zaštiťuje spolek OpenAlt.