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

Bash nie jest jedyną powłoką Linuksa. Łatwo jest wypróbować inne powłoki, takie jak Zsh, który jest bardzo popularny. Gdy znajdziesz taki, który Ci się podoba, użyj polecenia chsh, aby ustawić go jako domyślną powłokę. Pokażemy Ci, jak to zrobić.

Dlaczego powłoka jest ważna

Muszla znajduje się między tobą a systemem operacyjnym. Zapewnia środowisko w oknie terminala, które umożliwia wpisywanie poleceń i uruchamianie programów. Powłoka sprawdza twoje dane wejściowe i określa, czego chcesz. Jeśli może samodzielnie wykonać Twoją licytację, robi to. Jeśli potrzebuje pomocy z zewnątrz, przeszukuje ścieżkę i znajduje programy, które mogą zrobić wszystko, o co poprosisz.

W systemie Linux dostępnych jest wiele różnych powłok. Wszystkie umożliwiają wykonywanie tych samych podstawowych zadań: eksplorowanie systemu plików, pracę z plikami, uruchamianie programów i uruchamianie skryptów. Jednak każdy z nich wykonuje te zadania na swój własny sposób i ma swoje własne cechy szczególne i osobliwości.

Muszle są zwykle projektowane przez ludzi, którzy chcą, aby rzeczy zachowywały się w określony sposób. Jeśli twoje myślenie jest zgodne z tym projektantem, ta powłoka może być dla ciebie dobra. Ponadto wypróbowanie nowej powłoki w systemie Linux jest łatwe.

W większości dystrybucji Linuksa, w tym Ubuntu, domyślną powłoką jest bash. Wykonuje świetną robotę i jest bardzo zdolny. Jednak inna powłoka może zapewnić różnicę oszczędzającą czas, która miałaby duży wpływ na przepływ pracy. Nigdy się nie dowiesz, jeśli nie spojrzysz!

Wiadro muszelek

Omówiliśmy już różne powłoki Linuksa, ale oto krótkie wprowadzenie do najpopularniejszych:

bash: The Granica znowu powłoka jest domyślny w wielu dystrybucjach.
rbash: To Ograniczony powłoka bash zapewnia minimalną funkcjonalność osobie lub skryptowi, który w niej działa.
Ash: The Muszla Almquista to lżejsza wersja bash.
myślnik: Debian Alquist Shell to domyślny skrypt powłoki w Ubuntu. Podczas gdy bash jest domyślnym loginem i powłoką interaktywną, dash jest używany do uruchamiania procesów systemowych, ponieważ jest znacznie lżejszy niż bash.
zsh: Powłoka Z. to nowoczesne podejście do rodziny muszli bash. Oferuje zgrabne ulepszenia, takie jak sprawdzanie pisowni poleceń i sugerowane poprawki.
ryba: To przyjazna, interaktywna powłoka został napisany od podstaw i nie pochodzi z żadnej innej rodziny powłok. Ma być przyjazny dla użytkownika. Wśród wielu innych korzyści, fish oferuje sugestie dotyczące poleceń na podstawie historii i zawartości bieżącego folderu, podobnie jak przewidywanie tekstu.
ksh: KornShell zapewnia szczególnie mocny język skryptowy.

Wymień zainstalowane powłoki

Aby zobaczyć, które powłoki są zainstalowane na komputerze, użyj tego polecenia. Po prostu wyświetla zawartość pliku / etc / shells:

cat /etc/shells

cat / etc / shells w oknie terminala.

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

sh jest Thompsona shell, napisany w 1971 roku przez Ken Thompson z Bell Labs sława. Nie jest już utrzymywany i już dawno został wyparty przez nowoczesne powłoki. Jest dołączony wyłącznie w celu zachowania zgodności ze starszymi skryptami, które nadal mają w pierwszym wierszu:

#!/bin/sh

To instruuje system, aby użył powłoki sh do wykonania skryptu. Czy naprawdę masz tę starożytną powłokę na swoim komputerze i czy jest ona używana do uruchamiania skryptów? Które polecenie powie nam, który program faktycznie działa, gdy wpiszesz polecenie.

Zobaczmy, co jest uruchamiane po wpisaniu sh:

which sh

Wygląda na to, że znajduje się plik binarny. jeśli jednak zagłębimy się nieco głębiej, zobaczymy, że jest to symboliczne łącze, które w rzeczywistości wskazuje na myślnik, lekką powłokę używaną do wykonywania skryptów:

ls -l /bin/sh

które sh w oknie terminala.

To zgrabny, lekki sposób na zapewnienie siatki bezpieczeństwa dla skryptów, które spodziewają się znaleźć sh w nowoczesnych systemach.

Instalowanie innej powłoki

Zainstalujmy skorupę ryby i ustawmy ją jako domyślną dla dave. W Ubuntu wpisujemy następujące polecenie:

sudo apt-get install fish

sudo apt-get install fish w oknie terminala.

Na Manjaro użyj Pacmana:

sudo pacman -Sy fish

sudo pacman -Sy fish w oknie terminala.

W Fedorze wpisz:

sudo dnf install fish

sudo dnf zainstaluj rybę w oknie terminala.

Po zakończeniu instalacji możesz jeszcze raz sprawdzić zainstalowane powłoki:

cat /etc/shells

cat / etc / shells w oknie terminala.

Nasza nowa powłoka pojawia się jako / usr / bin / fish. Zwróć uwagę na tę ścieżkę – wkrótce będziesz jej potrzebować.

Zmienna środowiskowa $ SHELL

Zmienna środowiskowa $ SHELL przechowuje nazwę twojej bieżącej powłoki. Możemy sprawdzić, który z nich jest ustawiony za pomocą echa:

echo $SHELL

Zacznijmy od muszli rybnej:

fish

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

echo $SHELL

echo $ SHELL w oknie terminala.

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

Kiedy uruchamiamy skorupę rybną, otrzymujemy przyjazną wiadomość powitalną i zmienia się wiersz poleceń. Zaskakujące może być to, że środowisko $ SHELL nadal zawiera ścieżkę do pliku wykonywalnego bash, / bin / bash. W porządku – to normalne.

Po uruchomieniu nowej powłoki (lub dowolnego innego programu) dziedziczy ona środowisko powłoki nadrzędnej. Zatem skorupa rybna dziedziczy globalne i wyeksportowane zmienne środowiskowe z powłoki bash. Ponieważ wartość w zmiennej środowiskowej $ SHELL nie została zmieniona, ma tę samą wartość w skorupie ryby, co w powłoce bash.

Łowimy ryby jak każdy inny program. Możemy również użyć wyjścia, aby wyjść z rybiej skorupy. Zamyka się jak każdy inny program i wracamy do powłoki bash.

Świetnie nadaje się do wypróbowywania nowych powłok, sprawdzania, co mogą zrobić i czy się z nimi dogadujesz. Możesz eksplorować, zanim wykonasz skok i zaadoptować jeden jako swoją docelową muszlę.

Jeśli zdecydujesz się ustawić rybę – lub jakąkolwiek inną muszlę – jako domyślną, będziesz musiał użyć polecenia chsh.

Polecenie chsh

Polecenie chsh umożliwia zmianę domyślnej powłoki. Sztuczka polega na świadomości, że umożliwia zmianę zarówno domyślnego logowania, jak i domyślnej powłoki interaktywnej. Możesz chcieć zmienić jedną lub drugą lub obie.

Za każdym razem, gdy logujesz się w celu uzyskania wiersza poleceń, używasz powłoki skonfigurowanej jako powłoka logowania. Gdy jesteś już zalogowany i otworzysz okno terminala, używasz powłoki skonfigurowanej jako powłoka interaktywna. Mogą to być te same lub różne muszle.

Aby ustawić swoją powłokę logowania, użyj chsh bez parametrów:

chsh

chsh w oknie terminala.

Zostaniesz poproszony o podanie hasła. Następnie musisz wpisać ścieżkę do nowej powłoki i nacisnąć Enter.

Jeśli wykonamy zdalne połączenie z tym komputerem testowym z innego, po zalogowaniu się znajdziemy się w rybiej muszli.

Połączenie SSH przedstawiające skorupę rybną jako powłokę logowania w oknie terminala.

Aby zmienić interaktywną powłokę, użyj chsh z opcją -s (powłoka). Przekaż ścieżkę do nowej powłoki w wierszu poleceń:

chsh -s /usr/bin/fish

chsh -s / usr / bin / fish w oknie terminala.

Zostaniesz poproszony o podanie hasła i wrócisz do wiersza poleceń bieżącej powłoki. Aby zmiana zaczęła obowiązywać, musisz się wylogować i zalogować ponownie. Kiedy to zrobisz, zobaczysz powitanie i wiersz polecenia skorupy ryb.

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

echo $SHELL

echo $ SHELL w oknie terminala.

Zmiana powłoki innego konta użytkownika

Jeśli masz uprawnienia roota i możesz używać sudo, możesz zmieniać powłoki innych kont użytkowników. Polecenie jest takie samo jak poprzednio, z dodaniem nazwy użytkownika tej osoby do wiersza poleceń:

sudo chsh -s /usr/bin/fish mary

sudo chsh -s / usr / bin / fish mary w oknie terminala.

Kiedy mary następnym razem się zaloguje, zobaczy nową powłokę, gdy otworzy okno terminala.

użytkownik mary w wierszu poleceń powłoki ryb, w oknie terminala.

Każdy