Tuningujeme Linux (3.) - Proměnné prostředí

V dalším článku si probereme významné proměnné, které mají svou úlohu ve zjednodušování práce, a zároveň si ukážeme, jak snadno a jednoduše lze upravit příkazový řádek tak, aby byl lépe čitelný.

Proměnné prostředí existovaly už v Dosu. Tam jich bylo (oproti Linuxu) velmi málo a většinou se jednalo o cestu do prozatimního adresáře a proměnou PATH, která určovala cesty, které se mají prohledávat kvůli spustitelným souborům.

I v Linuxu je proměnná PATH, která určuje, které spustitelné soubory mají být přístupny odkudkoliv. Např. program pro vypnutí systému shutdown se nachází v adresáři /sbin. A proto kdybyste neměli v proměnné PATH uvedenou tuto cestu, museli byste pro každé vypnutí počítače jít do výše zmíněného /sbin nebo počítač vypínat dlouhým /sbin/shutdown -h 0. Tento problém by sice šel řešit pomocí aliasů, ale ty jsou v tomto případě zbytečné. Stačí si přeci do proměnné PATH přidat /sbin a vše je jak má být a máme přístup i k dalším programům, i třeba ke stejnému účelu (reboot, halt, poweroff).

Podívejme se nyní na všechny proměnné prostředí, které se právě "vyskytují" ve vašem systému. Použijte k tomu následující:
env | less

A teď k jednotlivým:
PWD (Print working directory) - Aktuální adresář
MAIL Soubor s mailem aktuálního uživatele
USER Aktuální uživatel
HOME Domácí adresář uživatele
SHELL Příkazový interpret

My si ale budeme přidávat nebo upravovat další proměnné:

PS1 Hlavní příkazový řádek
PATH Viz. výše
VISUAL Program pro editaci
EDITOR Program pro editaci (některé programy jsou vybíravé a vyberou si některou z těchto dvou), např. externí editor pro Mignight Commander
PAGER Program pro stránkování (more / less)
IGNOREEOF Počet zmáčnutí Ctrl+D pro odhlášení z shellu
MAILCHECK Jak často kontrolovat nový mail (ve vteřinách)
HISTIGNORE Jaké příkazy se nemají ukládat do historie Bashe

A nyní, když už víme, k čemu co je, tak se pusťme do úprav. Záleží, jak Linux používáte. Jestliho ho máte doma jako pracovní stanici třeba k programování, můžete si obecně při nastavování dovolit méně bezpečné volby, než kdyby jste spravovali internetový nebo firemní server, ke kterému by se připojovali vzdálení uživatelé. Předpokládejme první možnost, že na počítači pracujete jen vy a máte k dispozici práva roota.

Všechna nastavení budeme ukládat do /etc/profile, aby byly společné pro všechny uživatele. Kdyby jste chtěli nastavení jen pro některé uživatele, editujte .bash_profile nebo .bashrc v jejich domácím adresáři.

Začněme již zmiňovanou proměnnou PATH. V souboru /etc/profile si můžete prohlédnout její hodnoty. V mnoha distribucích je PATH různá pro běžné uživatele a roota, který v ní má cesty k systémovým programům, které normální uživatel nemá potřebovat. Omyl. Časem stejně nějaký ten program potřebujete. Takže co s tím?

Do /etc/profile si vložte tento řádek, popřípadě upravte na:

PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/games:/usr/bin/X11"

Všiměte si, že jednotlivé adresáře se oddělují dvojtečkami.

Proměnná PATH je teď pouze lokální, tj. že po ukončení čtení souboru /etc/profile by zanikla, proto z ní uděláme globální neboli proměnnou prostředí příkazem:

export PATH

A nyní už si můžeme nastavit ostatní podle svého.Tady je pár ukázek:

VISUAL="emacs" nebo...
VISUAL="mc -e" nebo...
VISUAL="vim" , nastaví editor
EDITOR="$VISUAL" doplní proměnnou EDITOR
MAILCHECK=30 kontrola nového mailu každých 30s.
PAGER="/usr/bin/less" stránkovač less
PAGER="/bin/more" stránkovač more
IGNOREEOF=2 dvakrát za sebou CTRL+D na prázdném příkaz. řádku odhlásí uživatele. Tato volba je užitečná kvůli překlepům.
HISTIGNORE="bg:fg" o historie, která je velmi užitečnou pomůckou (prochází se šipkami nahoru a dolu), neukládej určité příkazy. Odděluje se opět dvojtečkou.

Všechno "zglobalizujeme" :

export VISUAL EDITOR MAILCHECK PAGER IGNOREEOF HISTIGNORE

A nakonec to nejlepší:

Úprava příkazového řádku

Standardně po přihlášení vidíte jen strohý příkazový řádek, který vypadá nějak takhle:

uzivatel@hostname:/cesta$

Za ním bliká kurzor a vy vždy při čtení musíte ostraňovat začátek řádku a koukat jenom na cestu adresáře, ve kterém právě jste. Co kdyby príkazový řádek vypadal například podobně jako:

[uzivatel@hostname] [/cesta]$

Přehlednější, že? A co kdyby teprve byly jednotlivé položky různě barevné! To by bylo něco. Proč ne? Vezměme to ale popořadě.

To jak vypadá příkazový řádek ovlivňuje proměnná PS1, která běžně vypadá takto:

PS1="\u@\h:\w$ "

Znaky za zpěným lomítkem nazýváme společně s ním escape sekvence a jejich zásluhou se do textu přidávají specialní části, jako je např. uživatelské jméno, aktuální adresář, pípnutí, ale i barvy ap.

Zde je seznam nejpotřebnějších:

\a - pípnutí
\d - datum (ve formátu "den v týdnu měsíc den")
\h - hostname - jméno počítače
\n - nový řádek
\t - čas ve 24hod. formátu (hh:mm:ss)
\T - čas ve 12hod. formátu (hh:mm:ss)
\@ - čas ve 12hod. formátu (hh:mm am/pm)
\A - čas ve 12hod. formátu (hh:mm)
\u - aktuální uživatel
\w - aktuální pracovní adresář
\! - číslo příkazu v historii
\# - číslo příkazu
\$ - jestliže jste root, pak '#' jinak '#' - toto se používá jako koncový znak příkaz. řádku

Pokud si chcete vyzkoušet všechny escape sekvence, zadávejte do příkazového řádku např.:

export PS1="[\u@\h] [\w]\? ", abyste získali výše zmíněný přehlednější formát.

Nezapomínejte na konci na mezeru, aby byl text, který píšete, trochu oddělen.

A největší vychytávka! Přidáme ještě barvičky, takže náš příkazový řádek může vypadat opravdu přehledně. Do svého konfiguračního souboru, kam ukládáte všechna dnešní nastavení (.bashrc, .bash_profile, /etc/profile) si vložte následující řádky. Jedná se o escape sekvence, které jsou uloženy jako lokální proměnné pouze pro nastavovací soubor a slouží jenom pro přehledný zápis. Tak tady tedy je finální výtvor:
# barvy
MODRA="\[\033[0;34m\]"
SVETLE_ZELENA="\[\033[1;32m\]"
SVETLE_MODRA="\[\033[1;34m\]"
ZELENOMODRA="\[\033[1;36m\]"
ZLUTA="\[\033[1;33m\]"
BILA="\[\033[1;37m\]"
CERVENA="\[\033[0;31m\]"
SVETLE_SEDA="\[\033[0;37m\]"
VYCHOZI="\[\033[0m\]"
export PS1="[$MODRA\u@\h$VYCHOZI] [$ZELENOMODRA\w$VYCHOZI]\$ "

Jak barvy skutečně vypadají, ukazuje následující obrázek. Barvy se mohou lišit podle nastavení vašeho příkazového interpretu. Jestliže pracujete pod Xtermem, budou barvy jiné, než pokud pracujete pod Bashem, ale jedná se jen o drobné rozdíly.

barvy

A nyní? Nyní popusťte uzdu své fantazii a vytvořte si takový příkazový řádek, který lahodí vašim očím, a nastavte si proměnné tak, aby vyhovovaly právě vám. A jestli se tak opravdu stalo, pak tento článek splnil svůj úkol.
 
Další >