Konfiguracja zsh
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 |
% 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"
% 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
% 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 |
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 |
$ chsh -s /bin/zsh nazwa_użytkownika
|
Materiał udostępniany na podstawie licencji Creative Commons -
Attribution / Share Alike.
|