Proměnné prostředí
Z MiS
(Rozdíly mezi verzemi)
(→Úkoly: Řešení přesunuto do samostatného bloku na konci.) |
(Přidán odkaz na související stránky.) |
||
(Není zobrazeno 12 mezilehlých verzí od 1 uživatele.) | |||
Řádka 1: | Řádka 1: | ||
− | [[Category:VSE]][[Category:Informatika]][[Category:OSY]][[Category:Linux]] | + | [[Category:VSE]][[Category:Informatika]][[Category:OSY]][[Category:Linux]][[Category:Příkazový řádek]] |
== Proměnné prostředí == | == Proměnné prostředí == | ||
Řádka 67: | Řádka 67: | ||
== Významné proměnné Unixu/Linuxu == | == Významné proměnné Unixu/Linuxu == | ||
+ | Dále uvádíme proměnné, které jsou v unixových systémech často nastaveny. | ||
+ | <div class="Poznamka">V závislosti na konkrétním nastavení počítače a zvolené distribuci ale některé z těchto proměnných nemusí být nastaveny.</div> | ||
*http_proxy | *http_proxy | ||
− | http_proxy= | + | http_proxy=ht<tt></tt>tp://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, | ||
Řádka 86: | Řádka 88: | ||
LANGUAGE=en_US nano | LANGUAGE=en_US nano | ||
LANGUAGE=cs_CZ nano | LANGUAGE=cs_CZ nano | ||
− | + | *LANG | |
+ | ** nastavení národního prostředí (<tt>cs_CZ.UTF-8</tt>, <tt>en_US.UTF-8</tt>) | ||
+ | LANG=en_US.UTF-8 nano | ||
== Nastavení hodnoty trvale == | == Nastavení hodnoty trvale == | ||
Řádka 100: | Řádka 104: | ||
; Pro daného uživatele | ; Pro daného uživatele | ||
* <tt>~/.profile</tt> | * <tt>~/.profile</tt> | ||
− | ** Spouští login shell, tedy se načítá | + | ** Spouští se při spuštění ''login shell-u'', tedy se načítá po přihlášení uživatele. |
− | * Další možnosti: <tt>~/.bash_profile</tt>, ~./bash_login | + | ** Pro zajímavost: v tomto skriptu se nastavuje hodnota proměnné <tt>PATH</tt> (Debian 6). |
− | ** pokud existují, bash je použije místo ~/.profile | + | * Další možnosti: <tt>~/.bash_profile</tt>, <tt>~./bash_login</tt> |
+ | ** pokud existují, <tt>bash</tt> je použije místo <tt>~/.profile</tt> | ||
* <tt>~/.bashrc</tt> | * <tt>~/.bashrc</tt> | ||
− | ** Spouští se v non-login shellu, tedy pokud | + | ** Spouští se v ''non-login shellu'', tedy pokud jsem již přihlášen a spouštím další shell (například z grafického prostředí, nebo příkazem <code>bash</code>) |
; Pro všechny uživatele | ; Pro všechny uživatele | ||
* <tt>/etc/profile</tt> | * <tt>/etc/profile</tt> | ||
Řádka 113: | Řádka 118: | ||
Více viz také: [https://wiki.debian.org/EnvironmentVariables Wiki.Debian.org > EnvironmentVariables]. | Více viz také: [https://wiki.debian.org/EnvironmentVariables Wiki.Debian.org > EnvironmentVariables]. | ||
+ | |||
+ | == Příklady == | ||
+ | ; Příklad — tvorba a spouštění skriptu | ||
+ | * Připravte složku s názvem <tt>binary</tt> ve své domovské složce. | ||
+ | * Připravte v ní skript (vytvořte textový soubor) s názvem <tt>pozdrav</tt>. | ||
+ | * V rámci skriptu vypište něco na obrazovku. (Příkazy, které se mají v rámci spuštění skriptu provést zapište do textového souboru <tt>pozdrav</tt>): | ||
+ | echo "Ahoj" | ||
+ | * Nastavte skriptu oprávnění pro spuštění: | ||
+ | chmod 764 pozdrav | ||
+ | * Skript nyní nejde spustit zapsáním jména skriptu, je třeba uvést cestu | ||
+ | ''$'' pozdrav | ||
+ | ''-bash: pozdrav: příkaz nenalezen'' | ||
+ | ''$'' ./pozdrav | ||
+ | ''Ahoj'' | ||
+ | * Přidejte složku <tt>binary</tt> do proměnné <tt>$PATH</tt>. | ||
+ | * Vyzkoušejte, že skript již lze spustit tak, že napíšete pouze název. | ||
+ | |||
+ | <div class="Poznamka">Poznámka:<br /> | ||
+ | Pokud v Ubuntu existuje složka <tt>bin</tt> ve Vaší domovské složce, automaticky se přidá do proměnné <tt>PATH</tt>. | ||
+ | Tato akce se provede ve skriptu <tt>/.profile</tt>. | ||
+ | </div> | ||
== Úkoly == | == Úkoly == | ||
; Jednoduché úkoly: | ; Jednoduché úkoly: | ||
# Vypište všechny proměnné | # Vypište všechny proměnné | ||
− | # Vypište hodnotu proměnné | + | # Vypište hodnotu proměnné <tt>PATH</tt>. |
− | # Nastavte proměnnou < | + | # Nastavte proměnnou <tt>MyBinDir</tt> na hodnotu <tt>~/bin</tt> |
− | #Přidejte cestu < | + | #Přidejte cestu <tt>~/bin</tt> do proměnné <tt>PATH</tt>. Ověřte, že proběhlo správně. |
− | # Kdybyste smazali proměnnou | + | # Kdybyste smazali proměnnou <tt>PATH</tt>. Půjdou spustit příkazy??? Jak to vyřešíte? Vyzkoušejte! |
− | ; | + | |
− | + | ; Úkol — login skript | |
− | + | *Zařidte, aby byla kdykoli po spuštění shellu dostupná proměnná <tt>LOGIN_TIME</tt>, 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 | + | <div class="Reseni"> |
− | Řešení úkolů: | + | Ř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 | + | # <code>MyBinDir=~/bin</code> |
# <code>PATH=$PATH:$HOME/bin</code><br /><code>echo $PATH</code> | # <code>PATH=$PATH:$HOME/bin</code><br /><code>echo $PATH</code> | ||
+ | # <code>PATH=</code> | ||
</div> | </div> | ||
− | == | + | == Související stránky == |
− | * | + | * [[Vyhodnocení příkazů]] |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
== 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] |
Aktuální verze z 12. 1. 2023, 00:35
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
Dále uvádíme proměnné, které jsou v unixových systémech často nastaveny.
V závislosti na konkrétním nastavení počítače a zvolené distribuci ale některé z těchto proměnných nemusí být nastaveny.
- 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
- LANG
- nastavení národního prostředí (cs_CZ.UTF-8, en_US.UTF-8)
LANG=en_US.UTF-8 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í se při spuštění login shell-u, tedy se načítá po přihlášení uživatele.
- Pro zajímavost: v tomto skriptu se nastavuje hodnota proměnné PATH (Debian 6).
- 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 jsem již přihlášen a spouštím další shell (například z grafického prostředí, nebo příkazem
bash
)
- Spouští se v non-login shellu, tedy pokud jsem již přihlášen a spouštím další shell (například z grafického prostředí, nebo příkazem
- 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.
Příklady
- Příklad — tvorba a spouštění skriptu
- Připravte složku s názvem binary ve své domovské složce.
- Připravte v ní skript (vytvořte textový soubor) s názvem pozdrav.
- V rámci skriptu vypište něco na obrazovku. (Příkazy, které se mají v rámci spuštění skriptu provést zapište do textového souboru pozdrav):
echo "Ahoj"
- Nastavte skriptu oprávnění pro spuštění:
chmod 764 pozdrav
- Skript nyní nejde spustit zapsáním jména skriptu, je třeba uvést cestu
$ pozdrav -bash: pozdrav: příkaz nenalezen $ ./pozdrav Ahoj
- Přidejte složku binary do proměnné $PATH.
- Vyzkoušejte, že skript již lze spustit tak, že napíšete pouze název.
Poznámka:
Pokud v Ubuntu existuje složka bin ve Vaší domovské složce, automaticky se přidá do proměnné PATH. Tato akce se provede ve skriptu /.profile.
Ú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!
- Úkol — 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=