Login shell¶
Shell, který se spustí při přihlášení se nazývá login shell. Je to například shell, který získá uživatel po přihlášení na textovou konzolu nebo po přihlášení na vzdálený systém pomocí služby SSH.
Každý jiný shell, který nebyl spuštěn systémem automaticky po přihlášení
(například jednotlivá okna grafického terminálu) není login shell.
Vynutit spuštění login shell-u lze pomocí parametru -l:
1 | |
nebo např.:
1 | |
Interaktivní shell¶
Shell může být spuštěn buď interaktivně — uživatel s ním komunikuje, nebo jako interpret skriptu. Při interaktivní práci většinou požadujeme jiné chování příkazového interpretu než při spuštění skriptu. (O skriptování pojednává následující článek této série.)
Uživatel může například při interaktivní práci používat sadu “vychytávek”, aliasů a funkcí, které by při spuštění ve skriptu způsobily nepředvídané chování.
Z shell načítá konfigurační soubory v tomto pořadí:
| Soubor | Login shell | Interaktivní shell | Všechny shelly |
|---|---|---|---|
/etc/zsh/zshenv |
✓ | ✓ | ✓ |
~/.zshenv |
✓ | ✓ | ✓ |
/etc/zsh/zprofile |
✓ | ||
~/.zprofile |
✓ | ||
/etc/zsh/zshrc |
✓ | ✓ | |
~/.zshrc |
✓ | ✓ | |
~/.zlogin |
✓ |
Nejdůležitější jsou dva soubory:
-
~/.zprofile— načítá se jen pro login shell, vhodný pro nastavení prostředí (proměnnáPATHapod.) -
~/.zshrc— načítá se pro každý interaktivní shell, vhodný pro aliasy, funkce, nastavení promptu apod.
~/.zprofile¶
Soubor ~/.zprofile je ekvivalentem ~/.profile z Bashe. Typicky se v něm
nastavuje proměnná PATH a jiné proměnné prostředí:
1 2 3 4 5 6 7 8 | |
O proměnné PATH
už jsem psal. Adresář ~/bin/ nebo ~/.local/bin/ je typické místo pro uložení vlastních
uživatelských skriptů.
~/.zshrc¶
Soubor ~/.zshrc slouží pro počáteční nastavení interaktivního shellu.
Nastavují se v něm aliasy, funkce, prompt, doplňování příkazů a další
vychytávky. Ukázky níže ukazují jen základní strukturu — ~/.zshrc
zkušeného uživatele bývá podstatně delší. Například zde najdete
.zshrc,
který používám ve škole v labu.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
Aliasy¶
O aliasech už jsem psal. Zde několik příkladů jak to může vypadat:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
Barvy¶
Terminál umí zobrazovat barevný text pomocí
ANSI escape kódů.
Barvy se hodí pro přehledný výpis adresáře, zvýraznění výstupu grep apod.
1 2 3 4 5 | |
Barvy pro příkaz ls jsou konfigurovány proměnnou $LS_COLORS. Výchozí
hodnotu lze vygenerovat příkazem dircolors:
1 | |
Přehledné vysvětlení barevných escape sekvencí:
- https://wiki.archlinux.org/title/Color_output_in_console
- https://misc.flogisoft.com/bash/tip_colors_and_formatting
Prompt¶
Prompt (výzva) se nachází vlevo od kurzoru. V Zsh se nastavuje proměnnou
PROMPT (nebo PS1). Zsh má bohatý systém prompt expansion — speciální sekvence % se rozvinou na užitečné informace:
| Sekvence | Význam |
|---|---|
%n |
uživatelské jméno |
%m |
jméno počítače (hostname) |
%~ |
aktuální adresář (zkrácený) |
%d |
aktuální adresář (plný) |
%T |
čas (HH:MM) |
%? |
návratová hodnota posledního příkazu |
%# |
# pro root, $ pro běžného uživatele |
Barvy v promptu se nastavují pomocí %F{barva} … %f:
1 2 3 4 5 | |
Dokumentace: man zshmisc (sekce EXPANSION OF PROMPT SEQUENCES)
Hotová řešení¶
Místo ručního ladění promptu lze sáhnout po hotovém frameworku nebo nástroji:
- Oh My ZSH!
- Populární framework pro správu Zsh konfigurace. Obsahuje stovky témat a pluginů. Snadný start, ale může zpomalit spouštění shellu.
- Powerlevel10k
- Velmi rychlé téma pro Zsh s interaktivním průvodcem nastavení (
p10k configure). Podporuje ikony, git status, virtuální prostředí Pythonu a mnoho dalšího. - Starship
- Moderní, rychlý prompt napsaný v Rustu. Funguje v jakémkoli shellu (Zsh,
Bash, Fish…). Konfigurace v
~/.config/starship.toml.