Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Obecná podpora => Téma založeno: 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
-
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í.
-
Pokud chceš proměnnou pro všechny uživatele, pak ji přidej do souboru /etc/environment. Budeš ho muset editovat pod rootem.
-
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
-
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.
-
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.
-
Solvo problema ergo sum :D