L15: Uživatelský profil

linux.edumach.cz


Východiska

Filozofie operačního systému Unix se od filozofie jiných operačních systémů podstatně liší v jedné věci. Autoři Unixu se nepokoušeli předvídat všechny potřeby všech uživatelů. Místo toho se pokusili navrhnout operační systém tak, aby si každý uživatel pracovní prostředí svého operačního systému snadno upravil sám podle svých potřeb.

Konfigurační soubory

Konfigurace jednotlivých programů operačního systému Unix se definuje prostřednictvím tzv. konfiguračních souborů. Toto je asi nejtypičtější rys všech unixových systémů.

V Unixu bývají konfigurační soubory různého typu:

Nejdůležitější konfigurační soubory jsou ty, které používá příkazový interpret. No a tímto je v operačním systému Linux bash (/usr/bin/bash).

Důležité soubory profilu

Mezi další soubory vašeho profilu patří tyto. Pod pojmem “soubor” chápejte “skript”:

~/.bashrc

Tento soubor je spuštěn při přihlášení uživatele pomocí shellu Bash. Je často používán k inicializaci prostředí nebo nastavení různých proměnných prostředí, které mají být k dispozici během celého sezení. Není doporučené jej upravovat. Neodbornou úpravou si můžete váš profil poškodit.

~/.bash_profile 

Tento soubor je spuštěn při přihlášení uživatele pomocí shellu Bash. Je často používán k inicializaci prostředí nebo nastavení různých proměnných prostředí, které mají být k dispozici během celého sezení.

~/.profile 

Tento soubor je spouštěn při přihlášení uživatele bez ohledu na to, který shell je používán. Obsahuje obecné inicializační příkazy pro uživatelské prostředí, jako je nastavení cest (PATH), inicializace X Window System (grafické uživatelské rozhraní) nebo nastavení jazyka a lokalizace.

~/.bash_history 

Tento soubor obsahuje historii příkazů, které uživatel zadává do shellu Bash. Každý úspěšně provedený příkaz se automaticky zaznamenává do tohoto souboru, což umožňuje uživatelům procházet a opakovat dříve zadávané příkazy.

~/.bash_login 

Tento soubor je spuštěn pouze při přihlášení uživatele pomocí shellu Bash. Má podobnou funkci jako ~/.bash_profile a často se používá k inicializaci prostředí pro interaktivní sezení.

~/.bash_logout 

Tento soubor je spuštěn při odhlášení uživatele ze shellu Bash. Typické využití zahrnuje čištění dočasných souborů, ukládání historie nebo provádění jiných úkonů před ukončením sezení.

~/.ssh/config 

Soubor ~/.ssh/config slouží k nastavení konfigurace pro klienta SSH (Secure Shell). Jeho hlavním účelem je umožnit uživatelům definovat různé parametry připojení pro jednotlivé vzdálené servery, což usnadňuje a zjednodušuje proces připojování se k nim. Více informací v tématu “SSH klíče”.

Ne nutně všechny tyto soubory ve vašem profilu najdete. Pokud tam není ten, který potřebujete použít, pak jej prostě vytvoříte. Jak prosté 😃

.bash_profile

Soubor ~/.bash_profile slouží k nastavení uživatelského prostředí pro shell Bash, který se spustí při přihlášení uživatele do systému. Obsahuje nastavení proměnných prostředí, definice aliasů, spouštění programů nebo skriptů a další úkoly, které mají být provedeny při každém přihlášení uživatele. Tímto způsobem umožňuje uživatelům přizpůsobit své pracovní prostředí a provést automatické inicializační kroky při každém spuštění shellu.

Nyní si ukážeme několik užitečných úprav a „vylepšení“ .bash_profile:

Aliasy

Pomocí tzv. aliasů můžete vytvořit nebo upravit příkazy, které píšete do terminálu. Aliasy vkládejte na konec souboru ~/.bash_profile). Syntaxe aliasu je následující:

alias prikaz="upraveny prikaz" 

nebo

alias prikazA="prikazB" 

Několik příkladů:

Takovýchto „vylepšení“ si můžete vytvořit libovolný počet.

⚠️ POZNÁMKA: Všechny změny v souboru .bash_profile se projeví (aktivují) až při příštím přihlášení uživatele do terminálu. Rychlejším způsobem aktivace je příkazem source:

source ~/.bash_profile 

vždy po úpravě v souboru .bash_profile.

Úprava vzhledu promptu

V Debianu (a jeho odvozeninách) vypadá prompt nějak takto:

uzivatel@pocitac:~$ 

V distribuci Fedora vypadá nějak takto:

[uzivatel@pocitac ~]$ 

Na TuXovi takto:

jmeno@tux  ~
$

Konkrétní kód vašeho profilu (systémovou proměnnou $PS1) si můžete jednoduše vypsat:

echo $PS1 

Jinými slovy, vzhled, množství a pořadí informací se může lišit. Pokud vám stávající vzhled promptu nevyhovuje, není problém si vytvořit vlastní.

Může vypadat nějak takto:

PS1="\[\e[36m\]\u\[\e[m\]@\[\e[32m\]\h:\[\e[33;1m\]\w\[\e[m\]\n$ " 

Ano, kód vypadá dost krkolomně. Většinu kódu tvoří definice barev. Bez nich by řádek vypadal mnohem srozumitelněji:

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

V promptu můžete kromě běžných znaků jako @ a :, použít různé speciální kódy, které budou nahrazeny aktuálními informacemi o vašem systému nebo prostředí. Seznam některých běžně používaných:

Další kódy barev:

Barva Běžné písmo Tučné písmo Podtržení Pozadí písma
Black \e[0;30m\] \e[1;30m\] \e[4;30m\] \e[40m\]
Red \e[0;31m\] \e[1;31m\] \e[4;31m\] \e[41m\]
Green \e[0;32m\] \e[1;32m\] \e[4;32m\] \e[42m\]
Yellow \e[0;33m\] \e[1;33m\] \e[4;33m\] \e[43m\]
Blue \e[0;34m\] \e[1;34m\] \e[4;34m\] \e[44m\]
Purple \e[0;35m\] \e[1;35m\] \e[4;35m\] \e[45m\]
Cyan \e[0;36m\] \e[1;36m\] \e[4;36m\] \e[46m\]
White \e[0;37m\] \e[1;37m\] \e[4;37m\] \e[47m\]

Reset barvy: \e[0m\]

TIP: Pokud vám paleta barev nestačí, můžete použít RGB notaci: \e[s;38;2;r;g;bm

Kde s je styl a r,g,b jsou desítková čísla v rozsahu 0-255. Aby nebyl řádek PS1= příliš dlouhý (a tudíž nepřehledný), je výhodnější si barvy uložit do proměnných a v řádku PS1= se na ně pouze odkazovat. Jsme přeci v prostředí bashe :):

R="\[\e[38;2;255;100;100m\]" 
G="\[\e[38;2;100;255;100m\]" 
B="\[\e[38;2;100;100;255m\]" 
W="\[\e[0m\]" 
PS1="[${R}\u$W@{$B}\h$W:{$G}\w{$W}]\$ " 

Problematika barev v terminálu je mnohem rozsáhlejší. Pro zájemce odkazy:

  1. https://talyian.github.io/ansicolors/
  2. https://sweworld.net/linux/terminal/escape_code
  3. https://robotmoon.com/256-colors/

Jak na vlastní prompt

Editujte soubor ~/.bash_profile a zapište do něj kód výše (ten v té tabulce). Uložte a aktivujte:

nano ~/.bash_profile  
source ~/.bash_profile

Výchozí textový editor

Příkazem select-editor se vám zobrazí nabídka textových editorů (i těch nenainstalovaných):

Select an editor.  To change later, run 'select-editor'.
  1. /usr/bin/joe
  2. /usr/bin/jstar
  3. /usr/bin/jpico
  4. /usr/bin/jmacs
  5. /bin/nano        <---- easiest
  6. /usr/bin/vim.basic
  7. /usr/bin/rjoe
  8. /usr/bin/mcedit
  9. /usr/bin/vim.tiny

Choose 1-9 [5]:

Zvolte si jeden z nainstalovaných (v Debianu je zcela jistě nainstalovaný nano). Tím se ve vašem domovském adresáři vytvoří soubor .selected_editor s obsahem:

# Generated by /usr/bin/select-editor
SELECTED_EDITOR="/usr/bin/nano" 

Nastavení je platné okamžitě, není nutné ji aktivovat.

Barvy v terminálu

Na našem systému máme výpis barevný. Pokud pracujete v terminálu, který barvy nezobrazuje, lze je snadno zapnout.

Příkaz:

ls --color=always

zobrazí obsah adresáře barevně, kde například:

Chcete-li upravit barvy podle sebe, používá GNU ls proměnnou prostředí LS_COLORS.

Interaktivní změna barev v Linuxu (bez úprav souborů)

Pokud už běží barevná konfigurace, není třeba nic dělat. Pro jistotu lze spustit:

alias ls='ls --color=auto'

nebo alespoň: $ ls --color=always.

Podívej se na na aktuální barevné schéma:

echo $LS_COLORS

Proměnnou lze změnit exportem, stejně jako PS1.

Příklad: změna barvy adresářů (di) na fialovou:

export LS_COLORS="di=01;35:$LS_COLORS"

Příklad: symlinky (ln) na světle modrou:

export LS_COLORS="ln=01;36:$LS_COLORS"

Příklad: spustitelné soubory (ex) na žlutou:

export LS_COLORS="ex=01;33:$LS_COLORS"

Změna je okamžitá a platí jen do zavření terminálu – tedy ideální pro experimentování bez rizika.

Nastavení vlastních barev

Do terminálu (nebo do ~/.bash_profile) lze přidat:

eval "$(dircolors ~/.dircolors)"

Nejprve si ale vytvořte vlastní šablonu:

dircolors -p > ~/.dircolors

Soubor ~/.dircolors následně upravte – každý typ souboru má zapsaný vlastní kód, např.:

DIR 01;34   # adresáře
EXE 01;32   # spustitelné soubory
LINK 01;36  # symlinky

Kódy využívají běžné ANSI barvy (30–37, případně 01; pro tučné).

Konfiguraci poté znovu načtěte:

eval "$(dircolors ~/.dircolors)"

Shrnutí

Poznámka: macOS (BSD ls)
Na macOS se barvy neřídí LS_COLORS, ale dvojicí proměnných:

export CLICOLOR=1
export LSCOLORS=GxFxCxDxBxegedabagaced

Hodnota LSCOLORS je řetězec 11 dvojic znaků určujících barvy popředí/pozadí pro různé typy souborů (adresáře, symlinky, sockety, spustitelné soubory atd.). Každý znak značí barvu (a–h / A–H / x).
Toto nastavení je platné pouze pro BSD verzi ls, nikoli pro Linux.
Zdroj: https://stackoverflow.com/questions/54818298/how-to-color-ls-according-to-file-extension-in-iterm2

.nanorc

Nano je uživatelsky přívětivý textový editor s jednoduchým uživatelským rozhraním, který nabízí základní funkce pro úpravu textu v terminálu. Jeho vzhled se dá nastavit pomocí různých kódů set <hodnota>, viz https://www.nano-editor.org/dist/latest/nanorc.5.html

Do konfiguračního souboru ~/.nanorc si uložte tyto řádky (používám já):

set softwrap
set linenumbers
set numbercolor yellow
set tabsize 4
set tabstospaces
set titlecolor blue, cyan
set keycolor cyan
set functioncolor cyan
set smarthome

Poznámka: Výše popsané se týká vzhledu a chování editoru jako takového. Barevné zvýraznění obsahu editovaného souboru je automatické (nastavuje se jinak a jinde).

Nano nastavuje barevné zvýraznění syntaxe pomocí konfiguračních souborů s příponou .nanorc, které se v Debianu nacházejí v adresáři /usr/share/nano/ (v jiných distribucích mohou být v /etc/nano/):

$ ls /usr/share/nano/
asm.nanorc        email.nanorc       makefile.nanorc  po.nanorc
autoconf.nanorc   extra              man.nanorc       python.nanorc
awk.nanorc        go.nanorc          markdown.nanorc  ruby.nanorc
changelog.nanorc  groff.nanorc       nanohelp.nanorc  rust.nanorc
cmake.nanorc      guile.nanorc       nanorc.nanorc    sh.nanorc
c.nanorc          haskell.nanorc     nftables.nanorc  sql.nanorc
css.nanorc        html.nanorc        objc.nanorc      tcl.nanorc
debian            java.nanorc        ocaml.nanorc     texinfo.nanorc
debian.nanorc     javascript.nanorc  patch.nanorc     tex.nanorc
default.nanorc    json.nanorc        perl.nanorc      xml.nanorc
elisp.nanorc      lua.nanorc         php.nanorc       yaml.nanorc

Úprava: pokud z nějakého důvodu chcete upravit systémový soubor nazev.nanorc, postupujte takto (příklad pro soubor c.nanorc):

  1. Vytvořte si skrytý adresář ~/.nano
  2. Zkopírujte do něj soubor c.nanorc: cp /usr/share/nano/c.nanorc ~/.nano/
  3. Upravte jej podle svých potřeb.
  4. Do konfiguračního souboru ~/.nanorc přidejte cestu ke konfiguračnímu souboru c.nanorc. Například, pokud je soubor c.nanorc uložený v adresáři ~/.nano, přidejte řádek include ~/.nano/c.nanorc.