Home Dokumentacje Konfiguracja zsh
18 | 08 | 2019
Konfiguracja zsh
Wpisany przez Gentoo   

 

Konfiguracja zsh

Spis treści:

1. Instalacja

Instalacja zsh

Żeby zainstalować zsh w Gentoo, należy skompilować: app-shells/zsh ,czyli pakiet główny zsh oraz zbiór skryptów zapewniających dopełnianie poleceń w zsh app-shells/zsh-completion.

Listing 1.1: Kompilacja zsh

# emerge zsh zsh-completion

Pierwsze kroki w zsh

Po pierwszym uruchomieniu zsh pojawią się przedstawione poniżej informacje. Można je pominąć, ponieważ i tak plik konifguracyjny zostanie stworzony później.

Listing 1.2: Pomijanie konfiguracji zsh

$ zsh
This is the Z Shell configuration function for new users, zsh-newuser-install.
You are seeing this message because you have no zsh startup files
(the files .zshenv, .zprofile, .zshrc, .zlogin in the directory
~).  This function can help you with a few settings that should
make your use of the shell easier.

You can:

(q)  Quit and do nothing.  The function will be run again next time.

(0)  Exit, creating the file ~/.zshrc containing just a comment.
     That will prevent this function being run again.

(1)  Continue to the main menu.

--- Type one of the keys in parentheses --- q

2. Konfiguracja

Wstęp

W celu uruchomienia pojedynczej sesji zsh, należy użyć polecenia zsh. Aby zsh stało się domyślną powłoką, należy zajrzeć do części zatytułowanej zapisywanie ustawień. Tuż po instalacji zsh wydaje się być bardzo ograniczone w kwestii dostępnych funkcji, łatwo to jednak zmienić dokonując kilku zmian w konfiguracji.

Zaawansowane dopełnianie poleceń klawiszem TAB

Aby włączyć sławny już system dopełniania poleceń klawiszem TAB w zsh, należy wykonać poniższe polecenia:

Listing 2.1: Włączanie dopełniania

% autoload -U compinit
% compinit

Domyślnie styl dopełniania jest prosty i dość brzydki. Jeżeli ma być odrobinę ładniejszy, można użyć poniższych poleceń:

Listing 2.2: Upiększanie dopełniania

% zstyle ':completion:*:descriptions' format '%U%B%d%b%u'
% zstyle ':completion:*:warnings' format '%BSorry, no matches for: %d%b'

Poprawianie komend

Dobrym pomysłem jest również włączenie automatycznego poprawiania wpisywanych poleceń poprzez:

Listing 2.3: Włączanie poprawiania komend

% setopt correctall

Znak zachęty terminala

Na początku znak zachęty nie jest zbyt zachwycający, ale można to w szybki i prosty sposób zmienić. Pierwsze co należy zrobić, to uruchomić obsługę jego zaawansowanych opcji:

Listing 2.4: Włączanie zaawansowanego znaku zachęty

% autoload -U promptinit
% promptinit

Dostępne przykłady gotowych kompozycji znaków zachęty mogą być wyświetlone za pomocą polecenia prompt -p. Następnie możliwa jest aktywacja jednego z nich poprzez:

Listing 2.5: Wybieranie przykładowego znaku zachęty

(gentoo można zastąpić dowolnym spośród dostępnych)
% prompt gentoo

Uwaga: Listę wszystkich dostępnych znaków zachęty można wyświetlić za pomocą polecenia prompt -l.

Oczywiście można również stworzyć własny. Żeby to zrobić, należy najpierw wyeksportować zmienną środowiskową PS1.

Listing 2.6: Prosty przykład własnego znaku zachęty

% export PS1="[Test Prompt] > "
[Test Prompt] >

Możliwość stworzenia spersonalizowanego znaku zachęty w zsh pozwala na wstawienie wielu znaków specjalnych, wyświetlających interesujące i przydatne informacje. Kilka przykładów:

Znak specjalny Wyświetla
%T Czas systemowy (GG:MM)
%* Czas systemowy (GG:MM:SS)
%D Data (RR-MM-DD)
%n Nazwa użytkownika
%B - %b Rozpocznij - zakończ pogrubienie tekstu
%U - %u Rozpocznij - zakończ podkreślenie tekstu
%d Obecny katalog
%~ Katalog, w którym się znajdujemy; względnie do ~
%M Nazwa komputera
%m Nazwa komputera okrojona tylko do pierwszej części
%l Obecna konsola

Te znaki specjalne mogą być umieszczone w zmiennej środowiskowej PS1 i zsh przetworzy je automatycznie tworząc rozbudowany znak zachęty.

Listing 2.7: Bardziej rozbudowany znak zachęty

% export PS1="[%* - %D] %d %% "
[08:44:23 - 06-02-18] /home/username %

Historia

Niestety, domyślna konfiguracja zsh w Gentoo nie zawiera wsparcia dla historii poleceń. A praca bez niej jest bardzo frustrująca. Wystarczy jednak wyeksportować poniższe zmienne środowiskowe:

Listing 2.8: Podstawowa konfiguracja historii poleceń

% export HISTSIZE=2000
% export HISTFILE="$HOME/.history"

(Historia nie zostanie zapisana, jeżeli poniższa zmienna środowiskowa nie zostanie
wyeksportowana)
% export SAVEHIST=$HISTSIZE

Aby zapobiec zapisywaniu w historii duplikatów wpisywanych poleceń (na przykład: ls -l, które jest wielokrotnie używane w ciągu każdej sesji), wystarczy ustawić opcję hist_ignore_all_dups.

Listing 2.9: Ustawianie ignorowania duplikatów

% setopt hist_ignore_all_dups

Użyteczną "sztuczką" jest zapobieganie zapisywania w historii wybranych poleceń poprzedzając je pojedynczą spacją.

Listing 2.10: Zapobieganie zapisywaniu wybranych poleceń w historii

% setopt hist_ignore_space

(Ta komenda nie zapisze się w historii dzięki poprzedzającej ją spacji)
 %  cat /proc/cpuinfo 

Inne ustawienia

Opcję autocd można włączyć, aby uniknąć konieczności wpisywania polecenia cd do zmiany katalogu (na przykład: /etc zamiast cd /etc).

Listing 2.11: Włączanie opcjii autocd

% setopt autocd

Istnieje możliwość włączenia standardowego, pochodzącego z basha, stylu wpisywania nazw plików ze znakami specjalnymi (żeby pracować na kilku plikach jednocześnie - ang. globbing). Służy do tego opcja extendedglob. Dzięki niej możliwe będzie stosowanie znaków specjalnych w nazwach plików (tak jak w wyrażeniach regularnych).

Listing 2.12: Włączanie obsługi znaków specjalnych w nazwach plików

% setopt extendedglob

Gdy powyższa zmienna jest ustawiona, istnieje możliwość wpisywania rozszerzonych nazw plików takich jak na przykład: cp ^*.(tar|bz2|gz).

3. Zapisywanie ustawień

Zapisywanie ustawień zsh

Kiedy już zsh zostanie spersonalizowane, dobrym pomyslem jest zapisanie ustawionych opcji jako domyślnych dla zsh w całym systemie. Jedną z możliwości jest zapisanie ustawień w skrypcie /etc/zsh/zshrc. Inną, zapisanie ich tylko dla konta użytkownika w pliku ~/.zshrc.

Listing 3.1: Przykładowy plik zshrc

#!/bin/zsh

# dopełnianie komend
autoload -U compinit
compinit

# poprawianie komend
setopt correctall

# znak zachęty
autoload -U promptinit
promptinit
prompt gentoo

4. Ustawianie zsh jako domyślnej powłoki

Opcje dla użytkowników z przywilejami superużytkownika

Możemy zmienić powłokę dla każdego użytkownika w systemie poleceniem usermod.

Listing 4.1: Ustawianie zsh jako domyślnej powłoki w usermod

# usermod -s /bin/zsh userlogin

Alternatywa dla użytkowników bez praw superużytkownika

Jeżeli administrator systemu odmawia ustawienia zsh jako głównej powłoki, można zmusić bash do włączania zsh każdego podczas uruchamiania. Wszystko co trzeba zrobić to delikatna modyfikacja pliku ~/.bashrc.

Listing 4.2: Przykładowy ~/.bashrc

(Dodajemy poniższy wpis)
exec zsh

Inną metodą zmiany powłoki jest użycie polecenia chsh (narzędzia używanego do zmiany powłoki użytkownika). Zwykły użytkownik może zmienić powłokę tylko dla swojego konta. Superużytkownik może to zrobić dla dowolnego użytkownika.

Listing 4.3: Zmiana powłoki na zsh na stałe poprzez chsh

(W miejsce "nazwa_użytkownika" wpisujemy nazwę użytkownika, któremu
chsh ma zmienić powłokę na zsh)
$ chsh -s /bin/zsh nazwa_użytkownika

 

 
Linki sponsorowane

W celu realizacji usług i funkcji na witrynach internetowych ZUI "ELPRO" stosujemy pliki cookies. Korzystanie z witryny bez zmiany ustawień dotyczących plików cookies oznacza, że będą one zapisywane w urządzeniu wyświetlającym stronę internetową. Więcej szczegółów w Polityce plików cookies.

Akceptuję pliki cookies z tej witryny.