Proměnné prostředí
Z MiS
(Rozdíly mezi verzemi)
(→Úkoly: Řešení přesunuto do samostatného bloku na konci.) |
m (Použit styl .Reseni, upraveno.) |
||
Řádka 121: | Řádka 121: | ||
#Přidejte cestu <code>~/bin</code> do proměnné <code>$PATH</code>. Ověřte, že proběhlo správně. | #Přidejte cestu <code>~/bin</code> do proměnné <code>$PATH</code>. Ověřte, že proběhlo správně. | ||
# Kdybyste smazali proměnnou $PATH. Půjdou spustit příkazy??? Jak to vyřešíte? Vyzkoušejte! | # Kdybyste smazali proměnnou $PATH. Půjdou spustit příkazy??? Jak to vyřešíte? Vyzkoušejte! | ||
+ | |||
; Tvorba skriptu | ; Tvorba skriptu | ||
Řádka 140: | Řádka 141: | ||
− | <div | + | ; Příklad: login skript |
− | Řešení úkolů: | + | *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 <code>date</code> | ||
+ | *Vytvořte soubor <tt>.logintimes</tt>, ve kterém budou data spuštění bash-e pro každé přihlášení. | ||
+ | **Jak často se do souboru bude psát? | ||
+ | |||
+ | |||
+ | <div class="Reseni"> | ||
+ | Řešení úkolů (Linux): | ||
# <code>set</code> | # <code>set</code> | ||
# <code>echo $PATH</code> nebo <code>set | grep PATH</code> | # <code>echo $PATH</code> nebo <code>set | grep PATH</code> | ||
# MyBinDir=~/bin | # MyBinDir=~/bin | ||
# <code>PATH=$PATH:$HOME/bin</code><br /><code>echo $PATH</code> | # <code>PATH=$PATH:$HOME/bin</code><br /><code>echo $PATH</code> | ||
+ | # PATH= | ||
</div> | </div> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
== Vyhodnocování příkazové řádky == | == Vyhodnocování příkazové řádky == | ||
Řádka 159: | Řádka 163: | ||
**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] | ||
*[http://wiki.ubuntu.cz/V%C3%ADcejazy%C4%8Dn%C3%BD%20syst%C3%A9m Wiki.Ubuntu.cz -> Vícejazyčný systém] | *[http://wiki.ubuntu.cz/V%C3%ADcejazy%C4%8Dn%C3%BD%20syst%C3%A9m Wiki.Ubuntu.cz -> Vícejazyčný systém] |
Verze z 8. 1. 2015, 07:33
Obsah |
Proměnné prostředí
- Anglicky: environment variables
- Shell si můžeme představit jako interpret programovacího jazyka, tvořeného příkazy shellu. Pro vytváření programů (skriptů) pak často potřebujeme proměnné.
- Vlastně se jedná o způsob komunikace mezi procesy.
- Příklad použití
- Při instalaci programu instalátor nastaví do trvalých proměnných cesty k adresáři s fonty.
- Pokud adresář přesunu, stačí přenastavit hodnotu proměnné a program poběží bez problémů dál.
- 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é.
- (Program ale musí být naprogramován tak, aby hledal cestu v proměnné prostředí.)
- Kde se používají proměnné
- 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ě
- Příklady použití
- Typografický systém LaTeX používá proměnné pro uložení informací o umístění složek s fonty, spustitelnými soubory apod.
- Pokud chceme spouštět balíčky .JAR v Javě, musíme mít k prostředí Javy nastavenu cestu (viz Java: Export balíčku JAR).
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
- Vytvoření proměnné/nastavení hodnoty proměnné
- proměná shellu
promenna=hodnota
- Kopírování (export) 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é Unixu/Linuxu
- http_proxy
http_proxy=http://172.16.1.1:3128
- PATH
- složky, odkud se mohou spouštět soubory,
- cesty ke složkám jsou oddělené dvojtečkou.
Proměnná PATH funguje i ve Windows, jen jsou cesty oddělené středníkem.
- USER
echo $USER
- SHELL
- HOME
- domovský adresář aktuálního uživatele
- PWD
- aktuální cesta
- EDITOR
EDITOR=nano
- LANGUAGE
- nastavení jazyka (cs_CZ, en_US)
LANGUAGE=en_US nano LANGUAGE=cs_CZ nano
Nastavení hodnoty trvale
Windows
- Tento počítač-> Vlastnosti-> Upřesnit-> Proměnné prostředí
- Uživatelské proměnné
- Globální proměnné
GNU/Linux (shell bash)
- Vyzkoušeno v distribuci Debian.
- Při startu systému/shellu se spouští konfigurační skripty, kde lze nastavit proměnné.
- Obecně každý shell může spouštět jiné konfigurační skripty.
- Pro daného uživatele
- ~/.profile
- Spouští login shell, tedy se načítá jen po přihlášení počítače
- Další možnosti: ~/.bash_profile, ~./bash_login
- pokud existují, bash je použije místo ~/.profile
- ~/.bashrc
- Spouští se v non-login shellu, tedy pokud pustím z běžícího shellu druhý shell
- 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
Více viz také: Wiki.Debian.org > EnvironmentVariables.
Úkoly
- Jednoduché úkoly
- Vypište všechny proměnné
- Vypište hodnotu proměnné $PATH.
- Nastavte proměnnou
$MyBinDir
na hodnotu~/bin
- Přidejte cestu
~/bin
do proměnné$PATH
. Ověřte, že proběhlo správně. - Kdybyste smazali proměnnou $PATH. Půjdou spustit příkazy??? Jak to vyřešíte? Vyzkoušejte!
- Tvorba skriptu
- 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
Poznámka:
Tato akce se provádí na Ubuntu automaticky v /.profile pro $HOME/bin, pokud složka $HOME/bin existuje.
- 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?
Řešení úkolů (Linux):
-
set
-
echo $PATH
neboset | grep PATH
- MyBinDir=~/bin
-
PATH=$PATH:$HOME/bin
echo $PATH
- PATH=
Vyhodnocování příkazové řádky
- Pořadí
- nahrazení proměnných
- nahrazení *, ?
- v uvozovnách se nenahrazuje