Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Obecná podpora => Téma založeno: Kurama 31 Července 2013, 22:00:59

Název: Jak na systémovou proměnnou z bash skriptu [Vyřešeno]
Přispěvatel: Kurama 31 Července 2013, 22:00:59
Ahoj,
googlil jsem a hledal jsem se svou chatrnou angličtinou i v man a nedobral se kloudného výsledku.

Jak je možné ze spuštěného skriptu zapsat do globální systémové proměnné např. PATH,
tak aby proměnná byla zapsaná i po ukončení skriptu ?

Mám-li např. skriptík:
#!/bin/bash
export PATH="/usr/local/games
"

Zůstane uloženo v PATH pouze do konce skriptu.

Dík
Název: Re:Jak na systémovou proměnnou z bash skriptu
Přispěvatel: GdH 31 Července 2013, 23:25:57
Export proměnné má efekt jen na potomky shellu, ve kterém byla proměnná definována. Skript se spustí v subshellu a všechny proměnné, které v něm byly vytvořeny umřou s ním. Subshell exportované proměnné dědí jen jako kopie, takže jejich změna nemá na mateřský shell vliv. Pokud chceš upravit PATH globálně (pro daného uživatele), musíš patřičný příkaz připsat do souboru ~/.profile. Ovšem určitě $PATH nepřepisovat, ale jen doplnit, postup je ve zmíněném souboru k vidění.
Název: Re:Jak na systémovou proměnnou z bash skriptu
Přispěvatel: Myrmica 31 Července 2013, 23:39:41
Pokud chceš proměnnou pro všechny uživatele, pak ji přidej do souboru /etc/environment. Budeš ho muset editovat pod rootem.
Název: Re:Jak na systémovou proměnnou z bash skriptu
Přispěvatel: Kurama 01 Srpna 2013, 01:35:37
Děkuji vám za odpovědi.
Tedy z vlastního skriptu k definici systémové proměnné, tak aby zůstala zapsána i po skončení skriptu nedospěji.
A protože je v mém případě nežádoucí, aby proměnná byla zapsána po celou dobu provozu uživatele, musím si ji definovat ručně z příkazové řádky. To je sice dost nepraktické, ale budiž.
Děkuji všem
Název: Re:Jak na systémovou proměnnou z bash skriptu
Přispěvatel: GdH 01 Srpna 2013, 01:58:49
Záleží na tom, jak vlastně ten skript spouštíš a co je tvým cílem. Pokud chceš jen modifikovat proměnnou stávajícího terminálu nějakou jednodušší cestou, můžeš na konec skriptu přidat přidat příkaz bash, který spustí novou instanci Bashe a tudíž podědí i exportované proměnné (po skončení skriptu poběží v okně terminálu tato nová instance), nebo si v ~/.bashrc definuješ alias pro tvůj příkaz.
Název: Re:Jak na systémovou proměnnou z bash skriptu
Přispěvatel: Kurama 01 Srpna 2013, 02:24:59
Děkuji ti GdH, za tohle máš u mě pivo ;) . Vyřešil jsi můj problém, na konci skriptu spustím další Bash, ve kterém už je má proměnná a nebude-li už třeba stačí jednoduše exit. Řešení je prosté. Díky moc !

Záleží na tom, jak vlastně ten skript spouštíš a co je tvým cílem. Pokud chceš jen modifikovat proměnnou stávajícího terminálu nějakou jednodušší cestou, můžeš na konec skriptu přidat přidat příkaz bash, který spustí novou instanci Bashe a tudíž podědí i exportované proměnné (po skončení skriptu poběží v okně terminálu tato nová instance), nebo si v ~/.bashrc definuješ alias pro tvůj příkaz.
Název: Re:Jak na systémovou proměnnou z bash skriptu [Vyřešeno]
Přispěvatel: GdH 01 Srpna 2013, 19:55:18
Solvo problema ergo sum :D