Proměnné prostředí

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Opravena struktura a drobné opravy vzhledu)
(Přidán odkaz na související stránky.)
 
(Není zobrazeno 18 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í ==
 
* Anglicky: ''environment variables''
 
* 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|komunikace mezi procesy]].
 
* Vlastně se jedná o způsob [[Komunikace mezi procesy|komunikace mezi procesy]].
  
Řádka 24: Řádka 25:
 
;Příklady použití:
 
;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.
 
# 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]]).
+
# 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]]).
 
</div>
 
</div>
  
Řádka 34: Řádka 35:
  
 
== Práce s proměnnými: bash ==
 
== Práce s proměnnými: bash ==
;Nastavení hodnoty proměnné
+
; Vytvoření proměnné/nastavení hodnoty proměnné
* proměnnou shellu
+
* proměná shellu
 
  promenna=hodnota
 
  promenna=hodnota
* Kopírování proměnné shellu do prostředí:
+
* Kopírování (export) proměnné shellu do prostředí:
 
  export promenna
 
  export promenna
 
* Zkráceně lze psát naráz:
 
* Zkráceně lze psát naráz:
Řádka 66: Řá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&nbsp;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://172.16.1.1:3128
+
     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 85: Řá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 ==
; Windows XP
+
=== Windows ===
*Tento počítač-> Vlastnosti-> Upřesnit-> Proměnné prostředí
+
* Tento počítač-> Vlastnosti-> Upřesnit-> Proměnné prostředí
*Uživatelské proměnné
+
* Uživatelské proměnné
*Globální proměnné
+
* Globální proměnné
; Ubuntu (GNU/Linux)
+
 
*pro daného uživatele
+
=== GNU/Linux (shell <tt>bash</tt>) ===
**~/.profile
+
* Vyzkoušeno v distribuci Debian.
***změny se projeví až po restartu?
+
* Při startu systému/shellu se spouští konfigurační skripty, kde lze nastavit proměnné.
**~/.bash_profile or ~./bash_login
+
* Obecně každý shell může spouštět jiné konfigurační skripty.
***pokud existují, bash je použije místo ~/.profile
+
; Pro daného uživatele
**~/.bashrc
+
* <tt>~/.profile</tt>
***specifické pro Ubuntu?
+
** Spouští se při spuštění ''login shell-u'', tedy se načítá po přihlášení uživatele.
***změny ihned při příštím spuštění bash-e
+
** Pro zajímavost: v tomto skriptu se nastavuje hodnota proměnné <tt>PATH</tt> (Debian 6).
*pro všechny uživatele
+
* Další možnosti: <tt>~/.bash_profile</tt>, <tt>~./bash_login</tt>
**/etc/profile
+
** pokud existují, <tt>bash</tt> je použije místo <tt>~/.profile</tt>
**/etc/bash.bashrc
+
* <tt>~/.bashrc</tt>
***specifické pro Ubuntu?
+
** 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>)
**/etc/environment
+
; Pro všechny uživatele  
***není to skript, jen přiřazení proměnných
+
* <tt>/etc/profile</tt>
 +
* <tt>/etc/bash.bashrc</tt>
 +
** Specifické pro Ubuntu?
 +
* <tt>/etc/environment</tt>
 +
**není to skript, jen přiřazení proměnných
 +
 
 +
Více viz také: [https://wiki.debian.org/EnvironmentVariables Wiki.Debian.org &gt; EnvironmentVariables].
 +
 
 +
== Příklady ==
 +
; Příklad &mdash; 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 ==
*Vypište všechny proměnné
+
; Jednoduché úkoly:
*Vypište hodnotu proměnné $PATH.
+
# Vypište všechny proměnné
**echo $PATH
+
# Vypište hodnotu proměnné <tt>PATH</tt>.
**set | grep PATH
+
# Nastavte proměnnou <tt>MyBinDir</tt> na hodnotu <tt>~/bin</tt>
*Nastavte proměnnou $MyBinDir na hodnotu ~/bin
+
#Přidejte cestu <tt>~/bin</tt> do proměnné <tt>PATH</tt>. Ověřte, že proběhlo správně.
*Přidejte cestu do proměnné $PATH
+
# Kdybyste smazali proměnnou <tt>PATH</tt>. Půjdou spustit příkazy??? Jak to vyřešíte? Vyzkoušejte!
**~/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í.
+
; Úkol &mdash; login skript
*Použijte příkaz date
+
*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í.
*Vytvořte soubor .logintimes, ve kterém budou data spuštění bash-e pro každé 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?
 
**Jak často se do souboru bude psát?
  
== Vyhodnocování příkazové řádky ==
+
 
*Pořadí
+
<div class="Reseni">
**nahrazení proměnných
+
Řešení úkolů (Linux):
**nahrazení *, ?
+
# <code>set</code>
**v uvozovnách se nenahrazuje
+
# <code>echo $PATH</code> nebo <code>set | grep ^PATH=</code>
 +
# <code>MyBinDir=~/bin</code>
 +
# <code>PATH=$PATH:$HOME/bin</code><br /><code>echo $PATH</code>
 +
# <code>PATH=</code>
 +
</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í

Příklad použití
Kde se používají proměnné
Příklady použití
  1. Typografický systém LaTeX používá proměnné pro uložení informací o umístění složek s fonty, spustitelnými soubory apod.
  2. 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í

Práce s proměnnými: bash

Vytvoření proměnné/nastavení hodnoty proměnné
promenna=hodnota
export promenna
export promenna=hodnota
   LANGUAGE=cs nano
Výpis hodnoty proměnné
echo $promenna
printenv promenna
Výpis všech proměnných
set
printenv
Smazání proměnné
promenna=
unset promenna
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://172.16.1.1:3128
Proměnná PATH funguje i ve Windows, jen jsou cesty oddělené středníkem.
   echo $USER
   EDITOR=nano
   LANGUAGE=en_US nano
   LANGUAGE=cs_CZ nano
   LANG=en_US.UTF-8 nano

Nastavení hodnoty trvale

Windows

GNU/Linux (shell bash)

Pro daného uživatele
Pro všechny uživatele

Více viz také: Wiki.Debian.org > EnvironmentVariables.

Příklady

Příklad — tvorba a spouštění skriptu
echo "Ahoj"
chmod 764 pozdrav
$ pozdrav
-bash: pozdrav: příkaz nenalezen
$ ./pozdrav
Ahoj
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
  1. Vypište všechny proměnné
  2. Vypište hodnotu proměnné PATH.
  3. Nastavte proměnnou MyBinDir na hodnotu ~/bin
  4. Přidejte cestu ~/bin do proměnné PATH. Ověřte, že proběhlo správně.
  5. Kdybyste smazali proměnnou PATH. Půjdou spustit příkazy??? Jak to vyřešíte? Vyzkoušejte!


Úkol — login skript


Řešení úkolů (Linux):

  1. set
  2. echo $PATH nebo set | grep ^PATH=
  3. MyBinDir=~/bin
  4. PATH=$PATH:$HOME/bin
    echo $PATH
  5. PATH=

Související stránky

Zdroje

Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje