Proměnné prostředí
Z MiS
(Rozdíly mezi verzemi)
(Vytvoření stránky) |
m (Grafická úprava) |
||
Řádka 4: | Řádka 4: | ||
== Proměnné prostředí == | == Proměnné prostředí == | ||
− | * | + | * Anglicky: environment variables |
*Vlastně se jedná o způsob komunikace mezi [[Proces | procesy]]. | *Vlastně se jedná o způsob komunikace mezi [[Proces | procesy]]. | ||
Řádka 16: | Řádka 16: | ||
***program načte cestu z proměnné | ***program načte cestu z proměnné | ||
***dále s nimi pracuje | ***dále s nimi pracuje | ||
− | Kde se používají | + | |
+ | == Kde se používají == | ||
*V shellu | *V shellu | ||
**Jejich hodnoty nahrazuje shell | **Jejich hodnoty nahrazuje shell | ||
Řádka 23: | Řádka 24: | ||
*V programech | *V programech | ||
**Pro zajímavost: práce s proměnnými v Javě <../java/java.mm> | **Pro zajímavost: práce s proměnnými v Javě <../java/java.mm> | ||
− | Práce s proměnnými: bash | + | |
− | + | == Práce s proměnnými: bash == | |
− | + | ;nastavení | |
− | + | *promenna=hodnota | |
− | + | **vytvoří proměnnou shellu | |
− | + | ;výpis hodnoty | |
− | + | *echo $PATH | |
− | + | *nebo také | |
− | + | **printenv $PATH | |
− | + | ;výpis všech proměnných | |
− | + | *set | |
− | + | ;smazání proměnné | |
− | + | *~ nastavení prázdné hodnoty | |
− | + | **promenna= | |
− | + | **ale nemusí pomoci vždy (např. proměnná POSIXLY_CORRECT) | |
− | + | *unset $promenna | |
− | + | **odstraní proměnnou z prostředí | |
− | + | *export -n LC_ALL | |
− | Významné proměnné | + | **ponechá proměnnou shellu s původní hodnotou |
+ | == Významné proměnné == | ||
*http_proxy=http://172.16.1.1:3128 | *http_proxy=http://172.16.1.1:3128 | ||
**Dříve: http_proxy=http://172.16.1.4:8080 | **Dříve: http_proxy=http://172.16.1.4:8080 | ||
Řádka 58: | Řádka 60: | ||
*LANG | *LANG | ||
**en_US.UTF-8 | **en_US.UTF-8 | ||
− | Proměnné shellu × proměnné prostředí | + | |
+ | == Proměnné shellu × proměnné prostředí == | ||
*shell variables × environment variables | *shell variables × environment variables | ||
*Proměnné shellu platí pouze pro aktuální shell. (Nedědí se.) | *Proměnné shellu platí pouze pro aktuální shell. (Nedědí se.) | ||
Řádka 67: | Řádka 70: | ||
**zkráceně lze: | **zkráceně lze: | ||
***export $http_proxy=h... | ***export $http_proxy=h... | ||
− | Nastavení hodnoty trvale | + | |
+ | == Nastavení hodnoty trvale == | ||
*Windows XP | *Windows XP | ||
**Tento počítač-> Vlastnosti-> Upřesnit-> Proměnné prostředí | **Tento počítač-> Vlastnosti-> Upřesnit-> Proměnné prostředí | ||
Řádka 87: | Řádka 91: | ||
***/etc/environment | ***/etc/environment | ||
****není to skript, jen přiřazení proměnných | ****není to skript, jen přiřazení proměnných | ||
+ | |||
== Úkoly == | == Úkoly == | ||
*Vypište všechny proměnné | *Vypište všechny proměnné | ||
Řádka 115: | Řádka 120: | ||
*po nastavení složky do proměnné $PATH vyzkoušejte, že skript funguje | *po nastavení složky do proměnné $PATH vyzkoušejte, že skript funguje | ||
**zkusit, že skript funguje | **zkusit, že skript funguje | ||
+ | |||
== Příklad: login skript == | == Příklad: login skript == | ||
*Zařidte, aby byla kdykoli po spuštění shellu dostupná proměnná $LOGIN_TIME, ve které bude uložen čas přihlášení. | *Zařidte, aby byla kdykoli po spuštění shellu dostupná proměnná $LOGIN_TIME, ve které bude uložen čas přihlášení. | ||
Řádka 120: | Řádka 126: | ||
*Vytvořte soubor .logintimes, ve kterém budou data spuštění bash-e pro každé přihlášení. | *Vytvořte soubor .logintimes, ve kterém budou data spuštění bash-e pro každé přihlášení. | ||
**Jak často se do souboru bude psát? | **Jak často se do souboru bude psát? | ||
+ | |||
== Vyhodnocování příkazové řádky == | == Vyhodnocování příkazové řádky == | ||
*Pořadí | *Pořadí | ||
Řádka 125: | Řádka 132: | ||
**nahrazení *, ? | **nahrazení *, ? | ||
**v uvozovnách se nenahrazuje | **v uvozovnách se nenahrazuje | ||
+ | |||
== Zdroje == | == Zdroje == | ||
*[https://help.ubuntu.com/community/EnvironmentVariables Ubuntu.com/Environment Variables] | *[https://help.ubuntu.com/community/EnvironmentVariables Ubuntu.com/Environment Variables] |
Verze z 5. 1. 2011, 12:35
Obsah |
Proměnné prostředí
- Anglicky: environment variables
- Vlastně se jedná o způsob komunikace mezi procesy.
Typické použití (příklad)
- LaTeX
- při instalaci nastaví do proměnných cesty ke svým adresářům
- pokud adresář přesunu, stačí přenastavit proměnnou
- buď já jako klient
- nebo programátor, pokud se rozhodne v další verzi.
- při spuštění
- program načte cestu z proměnné
- dále s nimi pracuje
Kde se používají
- V shellu
- Jejich hodnoty nahrazuje shell
- pokud se na řádku objeví $promenna, dosadí hodnotu proměnné promenna
- Ve skriptech
- V programech
- Pro zajímavost: práce s proměnnými v Javě <../java/java.mm>
Práce s proměnnými: bash
- nastavení
- promenna=hodnota
- vytvoří proměnnou shellu
- výpis hodnoty
- echo $PATH
- nebo také
- printenv $PATH
- výpis všech proměnných
- set
- smazání proměnné
- ~ nastavení prázdné hodnoty
- promenna=
- ale nemusí pomoci vždy (např. proměnná POSIXLY_CORRECT)
- unset $promenna
- odstraní proměnnou z prostředí
- export -n LC_ALL
- ponechá proměnnou shellu s původní hodnotou
Významné proměnné
- http_proxy=http://172.16.1.1:3128
- Dříve: http_proxy=http://172.16.1.4:8080
- PATH
- složky, odkud se mohou spouštět soubory,
- oddělené dvojtečkou (na Windows středníkem)
- USER
- už tedy víte, proč echo $USER vypíše aktivního uživatele.
- SHELL
- HOME
- domovský adresář aktuálního uživatele
- PWD
- aktuální cesta
- EDITOR
- EDITOR=nano
- LANG
- en_US.UTF-8
Proměnné shellu × proměnné prostředí
- shell variables × environment variables
- Proměnné shellu platí pouze pro aktuální shell. (Nedědí se.)
- Prostředí (všechny proměnné prostředí) dědí od aktuálního procesu všechny dceřinné procesy.
- Pokud chceme nastavit platnost proměnné do všech procesů, použijeme:
- export promenna
- kopie proměnné shellu do prostředí
- zkráceně lze:
- export $http_proxy=h...
Nastavení hodnoty trvale
- Windows XP
- Tento počítač-> Vlastnosti-> Upřesnit-> Proměnné prostředí
- Uživatelské proměnné
- Globální proměnné
- Ubuntu
- pro daného uživatele
- ~/.profile
- změny se projeví až po restartu?
- ~/.bash_profile or ~./bash_login
- pokud existují, bash je použije místo ~/.profile
- ~/.bashrc
- specifické pro Ubuntu?
- změny ihned při příštím spuštění bash-e
- ~/.profile
- pro všechny uživatele
- /etc/profile
- /etc/bash.bashrc
- specifické pro Ubuntu?
- /etc/environment
- není to skript, jen přiřazení proměnných
- pro daného uživatele
Úkoly
- Vypište všechny proměnné
- Vypište hodnotu proměnné $PATH.
- echo $PATH
- set | grep PATH
- Nastavte proměnnou $MyBinDir na hodnotu ~/bin
- Přidejte cestu do proměnné $PATH
- ~/bin
- PATH=$PATH:$HOME/bin
- znovu vypsat proměnnou $PATH
- Zkuste smazat proměnnou $PATH
- půjdou spustit příkazy???
- Jak to vyřešíte?
- PR* Přidání adresáře do cesty
- Poznámka:
- tato akce se provádí na Ubuntu automaticky v /.profile pro $HOME/bin, pokud složka $HOME/bin existuje
- Připravte složku
- $HOME/binary
- Připravte v ní skript
- skript v něm, který něco vypíše na obrazovku
- pozdrav
- echo "Ahoj!"
- Nutné
- chmod 764 pozdrav
- skript nejde spustit zapsáním pouze jména, je třeba uvést cestu
- například ./pozdrav
- po nastavení složky do proměnné $PATH vyzkoušejte, že skript funguje
- zkusit, že skript funguje
Příklad: login skript
- Zařidte, aby byla kdykoli po spuštění shellu dostupná proměnná $LOGIN_TIME, ve které bude uložen čas přihlášení.
- Použijte příkaz date
- Vytvořte soubor .logintimes, ve kterém budou data spuštění bash-e pro každé přihlášení.
- Jak často se do souboru bude psát?
Vyhodnocování příkazové řádky
- Pořadí
- nahrazení proměnných
- nahrazení *, ?
- v uvozovnách se nenahrazuje