Jak změnit svůj výchozí Shell v Linuxu pomocí chsh

Bash není jediný dostupný shell v Linuxu. Existuje mnoho alternativ, jako například Zsh, který se těší velké popularitě. Pokud objevíte shell, který vám vyhovuje, příkazem `chsh` si ho můžete nastavit jako výchozí. V tomto průvodci vám ukážeme, jak na to.

Proč je Shell Důležitý?

Shell funguje jako prostředník mezi vámi a operačním systémem. Poskytuje rozhraní v terminálovém okně, kde můžete zadávat příkazy a spouštět aplikace. Shell analyzuje váš vstup a rozhodne, jaké akce provést. Pokud to zvládne sám, provede je. V opačném případě prohledá systém a hledá potřebné programy, které zvládnou vaše požadavky. Více informací o Unix shell.

V Linuxu je k dispozici mnoho různých shellů. Všechny umí provádět základní úkoly: navigaci v souborovém systému, práci se soubory, spouštění programů a skriptů. Nicméně, každý shell to dělá trochu jinak a má svá specifika a odlišnosti.

Shelly jsou často navrhovány lidmi, kteří chtějí, aby věci fungovaly určitým způsobem. Jestliže váš způsob myšlení ladí s filozofií návrháře shellu, bude se vám s ním dobře pracovat. Zkoušení nových shellů v Linuxu je navíc velice jednoduché.

Ve většině distribucí Linuxu, včetně Ubuntu, je Bash shell standardním výchozím shellem. Funguje spolehlivě a má bohatou funkčnost. Nicméně, jiný shell může nabídnout efektivnější práci a pozitivně ovlivnit váš pracovní postup. Nikdy to nezjistíte, dokud to nevyzkoušíte!

Přehled Shellů

Už jsme se o různých linuxových shellech zmínili, ale pojďme si je rychle shrnout:

  • bash: Bourne-again shell je výchozí shell v mnoha distribucích.
  • rbash: Omezená verze bash, která poskytuje omezenou funkčnost pro uživatele nebo spouštěné skripty.
  • ash: Almquist shell je odlehčená varianta bashe.
  • dash: Debian Almquist Shell je výchozí shell pro skripty v Ubuntu. I když bash je výchozí přihlašovací a interaktivní shell, dash se používá pro spouštění systémových procesů, protože má menší nároky na zdroje než bash.
  • zsh: Z shell je modernější pojetí bash rodiny shellů. Nabízí vylepšení jako kontrola pravopisu příkazů a návrhy oprav.
  • fish: Přátelský interaktivní shell napsaný od nuly a nepochází z žádné existující rodiny shellů. Klade důraz na uživatelskou přívětivost. Kromě jiných výhod, fish nabízí návrhy příkazů na základě vaší historie a obsahu aktuální složky, podobně jako prediktivní text.
  • ksh: KornShell poskytuje obzvláště robustní skriptovací jazyk.

Zjištění Instalovaných Shellů

Chcete-li zjistit, jaké shelly jsou nainstalované na vašem systému, použijte následující příkaz. Zobrazí obsah souboru `/etc/shells`:

cat /etc/shells

Zmínili jsme bash, dash a rbash, ale co je sh?

`sh` je Thompsonův shell, který napsal Ken Thompson v roce 1971 v Bell Labs. Nyní už se nepoužívá a byl nahrazen moderními shelly. Je součástí systému kvůli kompatibilitě se staršími skripty, které mají v prvním řádku:

#!/bin/sh

Tím se systému říká, že má ke spuštění skriptu použít shell sh. Ale používá se opravdu ten prastarý shell ke spouštění skriptů? Příkaz `which` vám ukáže, který program se ve skutečnosti spustí, když zadáte daný příkaz.

Podívejme se, co se spustí, když zadáte sh:

which sh

Zdá se, že najde binární soubor. Když se podíváme hlouběji, zjistíme, že to je symbolický odkaz, který ve skutečnosti ukazuje na dash, lehký shell používaný ke spouštění skriptů:

ls -l /bin/sh

Je to chytrý a nenáročný způsob, jak zajistit, aby skripty, které očekávají sh na moderních systémech, fungovaly správně.

Instalace Nového Shellu

Nainstalujme si fish shell a nastavme ho jako výchozí pro uživatele „dave“. V Ubuntu použijeme následující příkaz:

sudo apt-get install fish

Na Manjaru použijte pacman:

sudo pacman -Sy fish

Na Fedoře zadejte tento příkaz:

sudo dnf install fish

Po instalaci si můžete znovu zkontrolovat seznam instalovaných shellů:

cat /etc/shells

Náš nový shell je /usr/bin/fish. Poznamenejte si tuto cestu – budeme ji brzy potřebovat.

Proměnná Prostředí `$SHELL`

Proměnná prostředí `$SHELL` uchovává název vašeho aktuálního shellu. Pomocí `echo` můžeme zkontrolovat, který shell je nastavený:

echo $SHELL

Spusťme fish shell:

fish

Znovu zkontrolujme, co nyní říká proměnná `$SHELL`:

echo $SHELL

Když poprvé použijeme příkaz `echo $SHELL`, jsme v bash shellu. Proměnná prostředí obsahuje cestu ke spustitelnému souboru bash, `/bin/bash`.

Když spustíme fish shell, zobrazí se uvítací zpráva a změní se příkazový řádek. Co může být překvapující, je, že proměnná prostředí `$SHELL` stále obsahuje cestu ke spustitelnému souboru bash, `/bin/bash`. Je to v pořádku, je to normální chování.

Když spouštíte nový shell (nebo jakýkoli jiný program), zdědí proměnné prostředí nadřazeného shellu. Fish shell zdědí globální a exportované proměnné prostředí z bash shellu. Vzhledem k tomu, že hodnota proměnné `$SHELL` se nezměnila, má stejnou hodnotu ve fish shellu jako v bash shellu.

Fish spouštíme jako jakýkoli jiný program. Pro ukončení fish shellu můžeme použít příkaz `exit`. Uzavře se stejně jako ostatní programy a vrátíme se zpět do bash shellu.

Je to skvělý způsob, jak testovat nové shelly a zjistit, co umí a zda vám budou vyhovovat. Než se rozhodnete pro trvalou změnu, můžete ho prozkoumat a osvojit si ho jako váš hlavní shell.

Pokud se rozhodnete nastavit fish – nebo jakýkoli jiný shell – jako výchozí, musíte použít příkaz `chsh`.

Příkaz `chsh`

Příkaz `chsh` vám umožňuje změnit výchozí shell. Hlavní trik spočívá v tom, že vám umožňuje měnit výchozí přihlašovací i interaktivní shell. Můžete chtít změnit jeden, druhý, nebo oba.

Když se přihlásíte do systému, použijete shell nakonfigurovaný jako váš přihlašovací shell. Když už jste přihlášení a otevřete okno terminálu, použijete shell nakonfigurovaný jako váš interaktivní shell. Můžou to být stejné nebo různé shelly.

Chcete-li nastavit přihlašovací shell, použijte příkaz `chsh` bez parametrů:

chsh

Budete vyzváni k zadání hesla. Poté zadejte cestu k novému shellu a stiskněte Enter.

Pokud se k testovacímu počítači připojíme vzdáleně z jiného, po přihlášení se ocitneme ve fish shellu.

Chcete-li změnit interaktivní shell, použijte `chsh` s volbou `-s` (shell). Zadejte cestu k novému shellu v příkazovém řádku:

chsh -s /usr/bin/fish

Budete vyzváni k zadání hesla a vrátíte se do příkazového řádku vašeho aktuálního shellu. Aby se změna projevila, musíte se odhlásit a znovu přihlásit. Když se tak stane, uvidíte uvítací zprávu a příkazový řádek fish shellu.

Proměnná prostředí `$SHELL` nyní obsahuje cestu k novému výchozímu shellu:

echo $SHELL

Změna Shellu Jiného Uživetele

Máte-li práva roota a umíte používat příkaz sudo, můžete změnit shell i pro ostatní uživatele. Příkaz je stejný jako předtím, ale přidáte do něj uživatelské jméno dané osoby:

sudo chsh -s /usr/bin/fish mary

Příště, když se Mary přihlásí, uvidí nový shell, jakmile otevře terminál.

Závěrem