Jak zmienić domyślną powłokę w systemie Linux za pomocą chsh

Bash to tylko jedna z wielu dostępnych powłok w systemie Linux. Istnieje wiele innych, które możesz wypróbować, takich jak Zsh, która cieszy się dużą popularnością. Po znalezieniu powłoki, która Ci odpowiada, możesz użyć polecenia chsh, aby ustawić ją jako domyślną. W tym artykule pokażemy, jak to zrobić.

Znaczenie powłoki

Powłoka działa jako pomost między użytkownikiem a systemem operacyjnym. Umożliwia interakcję z systemem poprzez terminal, w którym można wpisywać polecenia i uruchamiać programy. Powłoka interpretując Twoje polecenia, decyduje, co należy wykonać. Jeśli potrafi zrealizować Twoje żądanie samodzielnie, robi to; jeśli potrzebuje pomocy, przeszukuje system w poszukiwaniu odpowiednich programów.

W systemie Linux istnieje wiele różnych powłok, które realizują podstawowe zadania, takie jak przeszukiwanie systemu plików, zarządzanie plikami, uruchamianie programów i skryptów. Każda z nich ma jednak swoje unikalne cechy oraz różnice w działaniu.

Powłoki są projektowane przez twórców, którzy mają na celu konkretne podejście do interakcji z systemem. Jeśli Twoje preferencje są zgodne z filozofią projektanta, ta powłoka może okazać się idealna dla Ciebie. Na szczęście, testowanie nowych powłok w systemie Linux jest proste.

W większości dystrybucji Linuksa, w tym Ubuntu, bash jest domyślną powłoką. Działa świetnie i jest bardzo funkcjonalny. Niemniej jednak, inna powłoka może zaoferować znaczące usprawnienia, które mogą wpłynąć na Twoją efektywność. Nie dowiesz się jednak, jeśli nie spróbujesz!

Przegląd powłok

  • bash: Bourne Again Shell jest domyślną powłoką w wielu dystrybucjach.
  • rbash: Ograniczona wersja bash oferująca minimalną funkcjonalność.
  • Ash: Almquist Shell, lżejsza alternatywa dla bash.
  • dash: Debian Almquist Shell, domyślna powłoka skryptowa w Ubuntu. Używana do uruchamiania procesów systemowych z powodu swojej lekkości.
  • zsh: Z Shell, nowoczesne podejście do powłoki bash z dodatkowymi funkcjami, takimi jak sprawdzanie pisowni poleceń.
  • fish: Friendly Interactive Shell, zaprojektowana z myślą o przyjazności dla użytkownika, oferująca sugestie poleceń na podstawie historii i bieżącego katalogu.
  • ksh: KornShell, znana z mocnego języka skryptowego.

Wyświetlanie zainstalowanych powłok

Aby sprawdzić, które powłoki są zainstalowane na Twoim systemie, użyj poniższego polecenia, które wyświetli zawartość pliku /etc/shells:

cat /etc/shells

Wspomnieliśmy o bash, dash i rbash, ale co z sh?

sh to powłoka Thompsona, stworzona w 1971 roku przez Kena Thompsona z Bell Labs. Nie jest już rozwijana i została zastąpiona przez nowocześniejsze powłoki. Jest zachowana tylko w celach zgodności z starszymi skryptami, które w pierwszym wierszu zawierają:

#!/bin/sh

To polecenie instruuje system, aby użył powłoki sh do wykonania skryptu. Czy ta przestarzała powłoka jest nadal obecna na Twoim komputerze i używana do uruchamiania skryptów? Możesz to sprawdzić, korzystając z poniższego polecenia.

Sprawdźmy, co się dzieje, gdy wpisujemy sh:

which sh

Wygląda na to, że istnieje plik binarny, ale po głębszym zbadaniu okaże się, że jest to link symboliczny, który wskazuje na dash – lekką powłokę używaną do uruchamiania skryptów:

ls -l /bin/sh

To sprytny sposób na zapewnienie, że skrypty oczekujące na sh będą działać również w nowoczesnych systemach.

Instalacja innej powłoki

Przykładowo, zainstalujmy powłokę fish i ustawmy ją jako domyślną dla użytkownika dave. W Ubuntu wykonaj poniższe polecenie:

sudo apt-get install fish

Dla systemu Manjaro użyj polecenia Pacman:

sudo pacman -Sy fish

W systemie Fedora wpisz:

sudo dnf install fish

Po zakończeniu instalacji możesz ponownie sprawdzić dostępne powłoki:

cat /etc/shells

Nowa powłoka powinna być widoczna jako /usr/bin/fish. Zwróć uwagę na tę ścieżkę – wkrótce będzie Ci potrzebna.

Zmienna środowiskowa $SHELL

Zmienna środowiskowa $SHELL przechowuje nazwę aktualnie używanej powłoki. Możemy sprawdzić, która powłoka jest ustawiona, używając polecenia echo:

echo $SHELL

Najpierw uruchommy powłokę fish:

fish

Teraz sprawdźmy, co mówi zmienna $SHELL:

echo $SHELL

Gdy po raz pierwszy używamy polecenia echo $SHELL, jesteśmy w powłoce bash. Zmienna $SHELL przechowuje ścieżkę do pliku wykonywalnego bash, czyli /bin/bash.

Po uruchomieniu powłoki fish, otrzymujemy przyjazną wiadomość powitalną i zmienia się nasz wiersz poleceń. Może być zaskakujące, że zmienna $SHELL nadal wskazuje na plik wykonywalny bash, czyli /bin/bash. To normalne.

Po uruchomieniu nowej powłoki (lub jakiegokolwiek innego programu) dziedziczy ona środowisko powłoki nadrzędnej. Oznacza to, że fish dziedziczy globalne i wyeksportowane zmienne środowiskowe z powłoki bash. Ponieważ wartość zmiennej $SHELL nie została zmieniona, ma tę samą wartość w powłoce fish, co w powłoce bash.

Możemy zamknąć powłokę fish jak każdy inny program, co spowoduje powrót do powłoki bash.

To świetna metoda na testowanie nowych powłok, sprawdzanie ich możliwości oraz tego, jak się z nimi czujesz. Możesz eksplorować, zanim zdecydujesz się na konkretną powłokę jako domyślną.

Aby ustawić fish – lub inną powłokę – jako domyślną, musisz użyć polecenia chsh.

Polecenie chsh

Polecenie chsh pozwala na zmianę domyślnej powłoki. Ważne jest, aby wiedzieć, że umożliwia ono zmianę zarówno powłoki logowania, jak i powłoki interaktywnej. Możesz zechcieć zmienić jedną, drugą lub obie.

Za każdym razem, gdy logujesz się, używasz powłoki skonfigurowanej jako powłokę logowania. Gdy już jesteś zalogowany i otwierasz nowe okno terminala, używasz powłoki interaktywnej. Mogą to być te same powłoki lub różne.

Aby ustawić powłokę logowania, wystarczy wpisać:

chsh

Wprowadź hasło, a następnie podaj ścieżkę do nowej powłoki i naciśnij Enter.

Na przykład, jeśli połączysz się z tym komputerem zdalnie z innego urządzenia, po zalogowaniu znajdziesz się w powłoce fish.

Aby zmienić interaktywną powłokę, użyj chsh z opcją -s (shell). Podaj ścieżkę do nowej powłoki:

chsh -s /usr/bin/fish

Wprowadź hasło, a następnie wrócisz do wiersza poleceń bieżącej powłoki. Aby zmiana zaczęła obowiązywać, musisz się wylogować i zalogować ponownie. Po tym zobaczysz powitanie i wiersz poleceń powłoki fish.

Zmienna $SHELL teraz wskazuje na ścieżkę do nowej domyślnej powłoki:

echo $SHELL

Zmiana powłoki dla innego użytkownika

Jeśli masz uprawnienia administratora i możesz używać sudo, możesz zmieniać powłoki dla innych użytkowników. Polecenie jest podobne jak wcześniej, z dodatkowym podaniem nazwy użytkownika:

sudo chsh -s /usr/bin/fish mary

Kiedy mary następnym razem się zaloguje, zobaczy nową powłokę w swoim terminalu.


newsblog.pl