Zsh和bash都是能夠在Linux中運行的shell腳本,通常默認的是bash,要想使用Zsh需另外安裝,下面小編將針對Zsh在Linux系統中的安裝和配置給大家做個詳細介紹,感興趣的朋友可以來了解下。
1. 安裝
安裝zsh
在Gentoo中安裝zsh,我們需要通過emerge來安裝app-shells/zsh(zsh本身)和app-shells/zsh-completion (zsh補全腳本)兩個軟件包。
代碼 1.1: 通過emerge安裝zsh
# emerge zsh zsh-completion
進入zsh
當你第一次運行zsh的時候,你會得到如下的一些信息。因為我們會在後面創建一個init文件,所以你可以跳過這一個功能選單。
代碼 1.2: 跳過初始配置
$ 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. 配置
簡介
運行zsh會為一個會話啟動zsh。如果你要一個永久的解決方案,請參考保存設置這一個章節。在安裝完成以後,zsh看起來可能非常的簡單並且功能十分有限。為了改變這個狀況,你需要對幾個配置進行修改。
先進的Tab補全
你需要運行以下的命令來開啟zsh的tab補全系統:
代碼 2.1: 開啟補全系統
% autoload -U compinit
% compinit
默認的補全風格非常的普通和簡陋。如果你要改進它的外觀,運行以下的命令:
代碼 2.2: 改進補全風格
% zstyle ‘:completion:*:descriptions’ format ‘%U%B%d%b%u’
% zstyle ‘:completion:*:warnings’ format ‘%BSorry, no matches for: %d%b’
命令糾錯
開啟命令自動糾錯功能也是一個不錯的主意:
代碼 2.3: 開啟糾錯功能
% setopt correctall
提示符
當前的提示符可能看起來很乏味,然而我們可以通過簡單的幾個步驟來解決它。首先,我們需要初始化高級命令提示符支持:
代碼 2.4: 開啟高級命令提示符功能
% autoload -U promptinit
% promptinit
我們可以使用prompt -p命令來列出可用的提示符樣本。現在我們可以激活一個我們喜歡的了:
代碼 2.5: 選擇一個提示符樣本
(使用你選擇的提示符替代“gentoo”)
% prompt gentoo
注意: 如果你在嘗試不同的提示符,並且你不想看到每一個提示符的示例,那麼你可以使用prompt -l來列出可用的提示符。
另一個選擇是創建你自己的提示符。你需要設置PS1環境變量來實現這個想法。
代碼 2.6: 一個簡單的自定義提示符
% export PS1=“[Test Prompt] 》 ”
[Test Prompt] 》
能夠創建自定義的文本提示符一定很不錯,與此同時zsh也提供了許多的轉義序列來允許你把系統信息插入到提示符裡。一些可用的轉義序列如下:
轉義序列打印效果
%T系統時間(時:分)
%*系統時間(時:分:秒)
%D系統日期(年-月-日)
%n你的用戶名
%B - %b開始到結束使用粗體打印
%U - %u開始到結束使用下劃線打印
%d你目前的工作目錄
%~你目前的工作目錄相對於~的相對路徑
%M計算機的主機名
%m計算機的主機名(在第一個句號之前截斷)
%l你當前的tty
你只要將這些轉義序列插入到環境變量PS1裡就可以了,而後zsh會自動地解析他們。
代碼 2.7: 一個更復雜的提示符
% export PS1=“[%* - %D] %d %% ”
[08:44:23 - 06-02-18] /home/username %
歷史記錄
不幸的是Gentoo裡默認的zsh配置不包含對命令行歷史記錄的支持。因為使用沒有歷史記錄功能的shell是十分令人沮喪的,所以我們應該輸入以下的命令:
代碼 2.8: 基礎的歷史記錄配置
% export HISTSIZE=2000
% export HISTFILE=“$HOME/.history”
(如果沒有以下命令,歷史記錄不會被存儲)
% export SAVEHIST=$HISTSIZE
為了防止記錄重復的輸入(比如ls -l在同一個shell會話中輸入了太多次),你可以設置hist_ignore_all_dups選項:
代碼 2.9: 設置忽略重復的記錄
% setopt hist_ignore_all_dups
一個小技巧可以用來防止某些特定的輸入被記錄,那就是在輸入他們之前先輸入至少一個空格。
代碼 2.10: 防止某些特定的輸入被記錄
% setopt hist_ignore_space
(這個命令不會被記錄。請注意在它之前的多出來的那個空格。)
% cat /proc/cpuinfo
雜項設置
如果你想要避免在切換目錄時一直輸入乏味的cd命令(比如使用/etc而不是cd /etc)你可以設置autocd選項。
代碼 2.11: 設置autocd選項
% setopt autocd
如果標准的bash樣式的文件名替換(globbing)不和你的胃口,你可以通過extendedglob選項來設置開啟擴展的文件名替換(globbing)(與正則表達式有些類似)。
代碼 2.12: 設置擴展的文件名替換
% setopt extendedglob
當上面的選項被設置了以後,你可以使用擴展的文件名替換查詢,例如:cp ^*.(tar|bz2|gz)。
3. 保存設置
保存zsh設置
當我們將zsh設置成我們喜歡的樣子後,我們最好把這些設置保存成zsh的默認設置。一個可行的方法是把我們的配置寫入到/etc/zsh/zshrc腳本裡,這樣這些設置就會成為系統默認的設置。還有一個替代方案就是通過編輯/etc/zsh/zshrc文件來使我們的設置只對自己的帳號有效。
代碼 3.1: 一個zshrc范例
#!/bin/zsh
# completion
autoload -U compinit
compinit
# correction
setopt correctall
# prompt
autoload -U promptinit
promptinit
prompt gentoo
4. 把zsh設置成默認的shell
對於有root權限的用戶的選擇
我們可以通過usermod命令來設置某一個給定用戶的shell。
代碼 4.1: 使用usermod命令永久地切換到zsh
# usermod -s /bin/zsh userlogin
對於非root用戶的替代解決方案
如果你的系統管理員拒絕為你把shell設置成zsh(無論你的請求多麼地溫和),那麼你可以設置bash在啟動的時候執行zsh,你要做的一切就是對你的~/.bashrc做一個小修改。
代碼 4.2: ~/.bashrc樣本
(把以下內容加入到你的~/.bashrc裡)
exec zsh
改變shell的另外一種方法就是使用chsh命令(一個改變用戶登錄shell的實用程序)。一個普通用戶只能改變自己賬戶的登錄shell。而作為root,你可以改變所有用戶的登錄shell。
代碼 4.3: 使用chsh命令永久地切換到zsh
(使用你的用戶名替代“username”)
$ chsh -s /bin/zsh username
上面就是Linux安裝和配置Zsh的方法介紹了,安裝完Zsh後還需對其進行相關配置,而Zsh的使用可以參考系統之家Linux Zsh命令使用實例。