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: Jak na systémovou proměnnou z bash skriptu [Vyřešeno]  (Přečteno 2442 krát)

Kurama

  • Návštěvník
  • Příspěvků: 7
Jak na systémovou proměnnou z bash skriptu [Vyřešeno]
« kdy: 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
« Poslední změna: 01 Srpna 2013, 02:28:24 od Kurama »

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re:Jak na systémovou proměnnou z bash skriptu
« Odpověď #1 kdy: 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í.

Myrmica

  • Závislák
  • ***
  • Příspěvků: 1701
    • MYRMICA
Re:Jak na systémovou proměnnou z bash skriptu
« Odpověď #2 kdy: 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.
Stolní strojek: OS– UBUNTU 16.04 x86_64, MB ASUS P8 Z68-V/GEN3, Intel® Core™ i5-3470 CPU @ 3.20GHz × 4 , 16GiB DDR3, GeForce GTX 670...
Notebook: ASUS U53Jc OS– UBUNTU 16.04 x86_64, Windows 7, Processor – Intel Core i5-460M (2,53 GHz), Graphics – switchable NVIDIA GeForce 310M and Intel GMA HD

Kurama

  • Návštěvník
  • Příspěvků: 7
Re:Jak na systémovou proměnnou z bash skriptu
« Odpověď #3 kdy: 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

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re:Jak na systémovou proměnnou z bash skriptu
« Odpověď #4 kdy: 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.
« Poslední změna: 01 Srpna 2013, 02:00:20 od GdH »

Kurama

  • Návštěvník
  • Příspěvků: 7
Re:Jak na systémovou proměnnou z bash skriptu
« Odpověď #5 kdy: 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.
« Poslední změna: 01 Srpna 2013, 03:02:35 od Kurama »

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re:Jak na systémovou proměnnou z bash skriptu [Vyřešeno]
« Odpověď #6 kdy: 01 Srpna 2013, 19:55:18 »
Solvo problema ergo sum :D

 

Provoz zaštiťuje spolek OpenAlt.