Proměnné prostředí
Z MiS
(Rozdíly mezi verzemi)
m (Grafická úprava) |
(Oprava práce s proměnnými) |
||
Řádka 5: | Řádka 5: | ||
== Proměnné prostředí == | == Proměnné prostředí == | ||
* Anglicky: environment variables | * Anglicky: environment variables | ||
− | *Vlastně se jedná o způsob komunikace mezi [[Proces | procesy]]. | + | * Vlastně se jedná o způsob komunikace mezi [[Proces | procesy]]. |
− | == | + | === Příklad použití: LaTeX === |
− | + | *při instalaci nastaví do proměnných cesty ke svým adresářům | |
− | + | *pokud adresář přesunu, stačí přenastavit proměnnou | |
− | + | ** může provést uživatel (z vlastních důvodů) | |
− | ** | + | ** nebo autor programu, například v příští verzi, když zjistí, že by bylo jiné umístění lepší |
− | + | * při spuštění | |
− | + | **program načte aktuální cestu z proměnné | |
− | + | ||
− | + | ||
− | == Kde se používají == | + | === Kde se používají === |
*V shellu | *V shellu | ||
**Jejich hodnoty nahrazuje shell | **Jejich hodnoty nahrazuje shell | ||
Řádka 23: | Řádka 21: | ||
*Ve [[Skript | skriptech]] | *Ve [[Skript | skriptech]] | ||
*V programech | *V programech | ||
− | **Pro zajímavost: práce s proměnnými v Javě | + | **Pro zajímavost: [http://download.oracle.com/javase/tutorial/essential/environment/env.html práce s proměnnými v Javě] |
+ | |||
+ | == Proměnné shellu × proměnné prostředí == | ||
+ | *Anglicky: ''shell variables'' × ''environment variables'' | ||
+ | *Proměnné shellu platí pouze pro aktuální shell. (Spuštěné procesy je nezdědí.) | ||
+ | *Proměnné prostředí zdědí od aktuálního procesu všechny dceřinné procesy. | ||
+ | ** Například příkazy spuštěné z shellu. | ||
== Práce s proměnnými: bash == | == Práce s proměnnými: bash == | ||
− | ; | + | ;Nastavení hodnoty proměnné |
− | *promenna=hodnota | + | * proměnnou shellu |
− | * | + | promenna=hodnota |
− | ; | + | * Kopírování proměnné shellu do prostředí: |
− | *echo $ | + | export promenna |
− | * | + | * Zkráceně lze psát naráz: |
− | + | export promenna=hodnota | |
− | ; | + | * Dočasné nastavení jen pro spouštěnou aplikaci |
− | *set | + | LANGUAGE=cs nano |
− | ; | + | |
− | * | + | ;Výpis hodnoty proměnné |
− | **promenna= | + | *proměnná shellu nebo prostředí |
− | * | + | echo $promenna |
− | + | *proměnné prostředí | |
− | * | + | printenv promenna |
− | + | ||
− | + | ;Výpis všech proměnných | |
+ | * všechny proměnné (i shellu) | ||
+ | set | ||
+ | * proměnné prostředí | ||
+ | printenv | ||
+ | |||
+ | ;Smazání proměnné | ||
+ | * nastavení prázdné hodnoty | ||
+ | ** ale proměnná zůstane, byť s prázdnou hodnotou | ||
+ | promenna= | ||
+ | * uvolnění proměnné prostředí i shellu | ||
+ | unset promenna | ||
+ | * odstranění hodnoty z prostředí, ale ponechání aktuální hodnoty proměnné shellu | ||
+ | export -n promenna | ||
+ | |||
== Významné proměnné == | == Významné proměnné == | ||
− | *http_proxy=http://172.16.1.1:3128 | + | *http_proxy |
− | + | http_proxy=http://172.16.1.1:3128 | |
*PATH | *PATH | ||
**složky, odkud se mohou spouštět soubory, | **složky, odkud se mohou spouštět soubory, | ||
− | **oddělené dvojtečkou ( | + | **oddělené dvojtečkou (ve Windows středníkem) |
*USER | *USER | ||
− | + | echo $USER | |
*SHELL | *SHELL | ||
*HOME | *HOME | ||
Řádka 57: | Řádka 75: | ||
**aktuální cesta | **aktuální cesta | ||
*EDITOR | *EDITOR | ||
− | + | EDITOR=nano | |
*LANG | *LANG | ||
− | ** | + | ** jazykové prostředí shellu (přepnutí klávesnice) |
− | + | LANG=en_US.UTF-8 | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
== Nastavení hodnoty trvale == | == Nastavení hodnoty trvale == |
Verze z 11. 1. 2011, 21:30
Obsah |
Proměnné prostředí
- Anglicky: environment variables
- Vlastně se jedná o způsob komunikace mezi procesy.
Příklad použití: LaTeX
- při instalaci nastaví do proměnných cesty ke svým adresářům
- pokud adresář přesunu, stačí přenastavit proměnnou
- může provést uživatel (z vlastních důvodů)
- nebo autor programu, například v příští verzi, když zjistí, že by bylo jiné umístění lepší
- při spuštění
- program načte aktuální cestu z proměnné
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ě
Proměnné shellu × proměnné prostředí
- Anglicky: shell variables × environment variables
- Proměnné shellu platí pouze pro aktuální shell. (Spuštěné procesy je nezdědí.)
- Proměnné prostředí zdědí od aktuálního procesu všechny dceřinné procesy.
- Například příkazy spuštěné z shellu.
Práce s proměnnými: bash
- Nastavení hodnoty proměnné
- proměnnou shellu
promenna=hodnota
- Kopírování proměnné shellu do prostředí:
export promenna
- Zkráceně lze psát naráz:
export promenna=hodnota
- Dočasné nastavení jen pro spouštěnou aplikaci
LANGUAGE=cs nano
- Výpis hodnoty proměnné
- proměnná shellu nebo prostředí
echo $promenna
- proměnné prostředí
printenv promenna
- Výpis všech proměnných
- všechny proměnné (i shellu)
set
- proměnné prostředí
printenv
- Smazání proměnné
- nastavení prázdné hodnoty
- ale proměnná zůstane, byť s prázdnou hodnotou
promenna=
- uvolnění proměnné prostředí i shellu
unset promenna
- odstranění hodnoty z prostředí, ale ponechání aktuální hodnoty proměnné shellu
export -n promenna
Významné proměnné
- http_proxy
http_proxy=http://172.16.1.1:3128
- PATH
- složky, odkud se mohou spouštět soubory,
- oddělené dvojtečkou (ve Windows středníkem)
- USER
echo $USER
- SHELL
- HOME
- domovský adresář aktuálního uživatele
- PWD
- aktuální cesta
- EDITOR
EDITOR=nano
- LANG
- jazykové prostředí shellu (přepnutí klávesnice)
LANG=en_US.UTF-8
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