Shell bash je jedním z nejpoužívanějších přihlašovacích shellů v Linuxu. Existují však i jiné shelly a můžete je používat pro práci s příkazovým řádkem (samozřejmě, pokud pro vaši práci neexistují specifické požadavky). V tomto článku budeme diskutovat o nástroji – nazvaný chsh - to vám umožní přepnout na přihlašovací shell odlišný od vašeho aktuálního shellu.
Ale než to uděláme, stojí za zmínku, že všechny příklady v tomto tutoriálu byly testovány na počítači Ubuntu 18.04 LTS.
Příkaz chsh pro Linux
Jak již bylo vysvětleno v úvodu výše, příkaz chsh vám umožňuje změnit váš přihlašovací shell. Následuje jeho syntaxe:
chsh [options] [LOGIN]
A zde je to, co o něm říká manuálová stránka nástroje:
The chsh command changes the user login shell. This determines the name
of the user's initial login command. A normal user may only change the
login shell for her own account; the superuser may change the login
shell for any account.
Následuje několik příkladů ve stylu otázek a odpovědí, které by vám měly poskytnout dobrou představu o tom, jak příkaz chsh funguje.
Q1. Jak používat chsh?
Základní použití je poměrně jednoduché – stačí provést příkaz 'chsh' bez argumentů. Budete požádáni o své přihlašovací heslo a po jeho úspěšném zadání budete mít možnost změnit přihlašovací shell.
chsh
Všimněte si, že ve výchozím nastavení je přihlašovací prostředí pro aktuálního uživatele změněno.
Q2. Jak změnit přihlašovací shell pomocí chsh?
Jak byste očekávali, stačí zadat novou hodnotu (viz snímek obrazovky v předchozím příkladu) a váš shell se změní na novou.
Například jsem jako novou hodnotu zadal /bin/sh.
Chcete-li ověřit změnu, můžete znovu spustit příkaz chsh. Hodnota uvedená v hranatých závorkách je aktuální shell. Takže v mém případě se aktuální shell stal /bin/sh:
O3. Jak změnit přihlašovací shell pro jiného uživatele?
K tomu stačí zadat uživatelské jméno jako vstup do příkazu chsh.
chsh [username]
Chcete-li například změnit přihlašovací shell uživatele root, použijte chsh následujícím způsobem:
chsh root
4. Jak zajistit, aby chsh běžel v neinteraktivním režimu?
Použijte k tomu volbu -s příkazového řádku, která vyžaduje, aby mu bylo jako vstup předáno jméno shellu.
Například:
chsh -s /bin/sh
Tímto způsobem se tedy přihlašovací shell pro aktuálního uživatele změní na /bin/sh neinteraktivním způsobem.
O5. Jak zobrazit seznam dostupných přihlašovacích shellů v systému?
Chcete-li se rychle podívat na seznam shellů dostupných ve vašem systému, stačí cat soubor /etc/shells.
Zde je například výstup vytvořený v mém systému:
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/bin/rbash
/bin/dash
Poznámka:
The only restriction placed on the login shell is that the command name
must be listed in /etc/shells, unless the invoker is the superuser, and
then any value may be added. An account with a restricted login shell
may not change her login shell. For this reason, placing /bin/rsh in
/etc/shells is discouraged since accidentally changing to a restricted
shell would prevent the user from ever changing her login shell back to
its original value.
Závěr
Jak vidíte, příkaz chsh je důležitým nástrojem, kterého by si uživatelé příkazového řádku měli být vědomi. Zde v tomto tutoriálu jsme diskutovali o většině možností příkazového řádku, které nástroj nabízí. Chcete-li se o chsh dozvědět více, přejděte na jeho manuálovou stránku.