Do not speak Portuguese? Translate this site with Google or Bing Translator
Instalando e Configurando o ZSH

Posted on: August 11, 2023 03:59 PM

Posted by: Renato

Views: 663

Instalando e Configurando o ZSH no Ubuntu

Mas o que é ZSH?

Z Shell ou simplesmente o ZSH, é um shell assim como o Bash e SH. Um shell no mundo GNU/Linux é a interface entre o usuário e o sistema operacional através da qual o usuário interage em linha de comando.

Existem vários shell’s, o shell padrão em um terminal no Ubuntu é o bash. Como saber qual o shell está sendo utilizado por seu usuário?

Em um terminal digite:

echo $SHELL
Executando o echo $SHELL no terminal

Como saída do comando, foi exibido /bin/bash, ou seja, o usuário está usando o bash como shell padrão.

Com o ZSH é possível usufruir de alguns recursos avançados de usabilidade quando comparado ao bash. Para quem utiliza o git como sistema de controle de versão, por exemplo, o ZSH possibilita integração, exibindo no terminal a branch atual, dentre outros recursos.

O ZSH é muito mais personalizável e possui uma série de plugins que permitem estender suas funcionalidades.

Instalando o Z Shell (ZSH) no Ubuntu 20.04

Como o ZSH já está disponível no repositório oficial do Ubuntu 20.04, a sua instalação fica facilitada, pois basta utilizar o apt (gerenciador de pacotes do Ubuntu) para instalá-lo.

1º) Atualize o cache do apt com o comando:

sudo apt update
Execução do comando: sudo apt update

2º) Instale o ZSH com o comando:

sudo apt install zsh -y
Execução do comando: sudo apt install zsh -y

Observação: o “-y” no final do comando é para não ter confirmação antes da instalação.

3º) Verifique se o ZSH está realmente instalado com o comando:

zsh --version
Execução do comando zsh — version

A saída do comando será:

zsh 5.8 (x86_64-ubuntu-linux-gnu

Definindo o ZSH como o shell padrão do usuário

1º) Precisamos saber onde está o binário do ZSH com o comando:

whereis zsh
Execução do comando: whereis zsh

Observe na saída do comando o trecho em negrito, ele indica o path (caminho) do binário do zsh:

zsh: /usr/bin/zsh /usr/lib/x86_64-linux-gnu/zsh /etc/zsh /usr/share/zsh /usr/share/man/man1/zsh.1.gz

2º) Agora pode-se definir queo ZSH será o shell padrão para o usuário com o comando:

sudo usermod -s /usr/bin/zsh $(whoami)
Execução do comando: sudo usermod -s /usr/bin/zsh $(whoami)

O comando define que o shell padrão do usuário, que é retornado pela execução do whoami entre os parenteses em uma variável, será o indicado no path da opção -s, ou seja, o zsh.

3º) Feche o terminal e abra novamente e observe a mensagem que surge:

Primeira execução do terminal após definição do ZSH como o shell default

Tecle 2 para que o ZSH crie o arquivo .zshrc dentro do diretório home do usuário. É nesse arquivo que ficam as configurações do ZSH.

ZSH configurado

Estilizando o ZSH com o tema Powerlevel9k

O Powerlevel9k é um tema bem bonito para linha de comando do ZSH. Para nossa sorte, ele também está disponível no repositório oficial do Ubuntu 20.04.

Instalando o Powerlevel9k

1º) Instale o tema powerlevel9k com o seguinte comando:

sudo apt install zsh-theme-powerlevel9k
Execução do comando: sudo apt install zsh-powerlevel9k

2º) Após a instalação do tema, precisamos adicionar a configuração no arquivo .zshrc definindo que ele será o tema utilizado pelo ZSH. Uma das formas de se fazer isso é com o comando abaixo:

echo "source /usr/share/powerlevel9k/powerlevel9k.zsh-theme" >> ~/.zshrc
Adição da configuração do tema powerlevel9k como padrão no ZSH

O comando anterior adiciona no final do arquivo .zshrc, que está dentro do diretório home do usuário, o conteúdo entre aspas.

3º) Feche a abra novamente o terminal para ver efeito, conforme figura abaixo:

ZSH com tema Powerlevel9K habilitado

Habilitando destaque de comandos (Syntax Highlighting)

Adicionalmente, pode-se habilitar um destaque nos comandos digitados. Esse recurso é conhecido como Syntax Highlighting e é amplamente utilizado em outros editores de textos, IDEs, etc.

1ª) O pacote que provê o syntax highlighting no ZSH também está disponível no repositório oficial do Ubuntu 20.04. Portanto, para instalar esse recurso, basta executar o comando abaixo:

sudo apt install zsh-syntax-highlighting
Execução do comando: sudo apt install zsh-syntax-highlighting

2º) Habilite a configuração de Syntax Highlighting no zsh com comando abaixo:

echo "source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ~/.zshrc
Execução do comando: echo “source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh” >> ~/.zshrc

3º) Feche a abra novamente o terminal. Ao executar comandos, perceberá que serão destacados em cores diferentes, comandos, opções e parêmetros de comandos, dentre outros destaques.

Visualizando o destaque nos comandos digitados

Configurando a integração do ZSH com o Git

Existe um framework adequado que provê facilidades/funcionalidades no shell para o uso do git com o shell ZSH. Esse framework é o Oh-My-ZSH, que está disponível no GitHub.

Dentre as funcionalidades, pode-se citar a exibição no prompt do shell a branch atual, se há alterações pendentes de commit, dentre outras.

1ª) Caso ainda não tenha o git instalado, instale com o comando abaixo:

sudo apt install git

2ª) Depois de ter o git em seu sistema, para instalar o Oh-My-ZSH, execute no terminal:

sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
Instalando o Oh-My-ZSH

Quando se instala o Oh-My-ZSH, o arquivo de configuração do ZSH (.zshrc) é alterado. Logo, as alterações feitas anteriormente como ter habilitado o tema Powerlevel9k e o Syntax Highlighting foram perdidas.

3º) Habilitando novamente o Powerlevel9k com o comando:

echo "source /usr/share/powerlevel9k/powerlevel9k.zsh-theme" >> ~/.zshrc

4º) Habilitando novamente o plugin Syntax Highlighting com o comando:

echo "source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ~/.zshrc

5º) Feche a abra novamente o terminal para visualizar as alterações.

6º) Para ilustrar a integração com o Git, pode-se criar um diretório, dentro do diretório home, e nele inicializar um repositório git. Para tanto, basta executar o comando abaixo:

mkdir repo-teste && cd repo-teste && git init
Criando um respositório teste para visualizar a integração ZSH com o Git

Personalizando ainda mais o ZSH

Habilitando Plugins do Oh-My-ZSH

O framework Oh-My-ZSH possui muitos plugins que extendem sua fucionalidades. Ao instalar o framework, conforme descrito anteriormente, dentro do diretório home foi criado um diretório .oh-my-zsh com o todo o seu código.

Dentro do diretório .oh-my-zsh, há um diretório plugins que contém os plugins disponíveis para o framework. O comando abaixo exibe os plugins disponíveis:

ls .oh-my-zsh/plugins

A saída do comando será vários diretórios, cada um para um plugin diferente. Destaca-se alguns: colored-man-pages, docker, ansible, mvn, dentre outros. Todos os plugins proporcionam funcionalidades extras no ZSH.

Como se habilita um plugin do Oh-My-ZSH?

Conforme já foi dito, qualquer configuração do ZSH fica dentro do diretório home do usuário em um arquivo nomeado .zshrc.

Para exemplificar, pode-se habilitar o plugin colored-man-pages, que proporciona a exibição colorida de páginas de manuais de comandos no GNU/Linux.

1ª) Usando um editor de texto, por exemplo o nano ou o vi, abra o arquivo de configuração com o comando:

nano ~/.zshrc

2º) Localize a linha que tem “plugins=”. Já deve ter entre os parenteses o plugin git, vamos acrescentar o colored-man-pages, conforme abaixo:

plugins=(
  git
  colored-man-pages
)

3º) Salve e feche o arquivo. Feche a abra novamente o terminal para carregar as alterações.

4º) Para visualizar o efeito que plugin proporciona, digite no terminal:

man git
Exibindo a página de manual do comando git, com o uso do plugin colored-man-pages

Habilitando outros temas

É possível utilizar outros temas no ZSH, além d Powerlevel9k. Para consultar alguns temas disponíveis, acesse https://github.com/ohmyzsh/ohmyzsh/wiki/Themes.

Para habilitar um tema diferente, abra novamente o arquivo .zshrc e localize a linha ZSH_THEME=. Entre as aspas duplas, basta informar o nome do tema desejado.

Observação importante é que para funcionar o novo tema, deve-se comentar, adicionando um # no início da linha que habilita o tema powerlevel9k, no final do arquivo:

#source /usr/share/powerlevel9k/powerlevel9k.zsh-theme

Explore mais temas e plugins para tornar o seu terminal shell mais produtivo e elegante.

Para Manjaro:

sudo apt install zsh -y
sudo pacman -S zsh
zsh --version\n
sudo pacman -S zsh-theme-powerlevel9k
sudo pacman -S zsh-syntax-highlighting
sudo pacman -S zsh-theme-powerlevel10k
echo "source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ~/.zshrc
echo "source /usr/share/powerlevel9k/powerlevel9k.zsh-theme" >> ~/.zshrc
cd ~
ls .oh-my-zsh/plugins
nano ~/.zshrc

Referências:

 


9

Share

Donate to Site


About Author

Renato

Developer

Add a Comment
Comments 0 Comments

No comments yet! Be the first to comment

Blog Search


Categories

OUTROS (16) Variados (109) PHP (133) Laravel (171) Black Hat (3) front-end (29) linux (114) postgresql (39) Docker (28) rest (5) soap (1) webservice (6) October (1) CMS (2) node (7) backend (13) ubuntu (56) devops (25) nodejs (5) npm (3) nvm (1) git (8) firefox (1) react (7) reactnative (5) collections (1) javascript (7) reactjs (8) yarn (0) adb (1) Solid (2) blade (3) models (1) controllers (0) log (1) html (2) hardware (3) aws (14) Transcribe (2) transcription (1) google (4) ibm (1) nuance (1) PHP Swoole (5) mysql (31) macox (4) flutter (1) symfony (1) cor (1) colors (2) homeOffice (2) jobs (3) imagick (2) ec2 (1) sw (1) websocket (2) markdown (1) ckeditor (1) tecnologia (14) faceapp (1) eloquent (14) query (4) sql (40) ddd (3) nginx (9) apache (4) certbot (1) lets-encrypt (3) debian (12) liquid (1) magento (2) ruby (1) LETSENCRYPT (1) Fibonacci (1) wine (1) transaction (1) pendrive (1) boot (1) usb (1) prf (1) policia (2) federal (1) lucena (1) mongodb (4) paypal (1) payment (1) zend (1) vim (4) ciencia (6) js (1) nosql (1) java (1) JasperReports (1) phpjasper (1) covid19 (1) saude (1) athena (1) cinnamon (1) phpunit (2) binaural (1) mysqli (3) database (42) windows (6) vala (1) json (2) oracle (1) mariadb (4) dev (12) webdev (24) s3 (4) storage (1) kitematic (1) gnome (2) web (2) intel (3) piada (1) cron (2) dba (18) lumen (1) ffmpeg (2) android (2) aplicativo (1) fedora (2) shell (4) bash (3) script (3) lider (1) htm (1) csv (1) dropbox (1) db (3) combustivel (2) haru (1) presenter (1) gasolina (1) MeioAmbiente (1) Grunt (1) biologia (1) programming (22) performance (3) brain (1) smartphones (1) telefonia (1) privacidade (1) opensource (3) microg (1) iode (1) ssh (3) zsh (2) terminal (3) dracula (1) spaceship (1) mac (2) idiomas (1) laptop (2) developer (37) api (5) data (1) matematica (1) seguranca (2) 100DaysOfCode (9) hotfix (1) documentation (1) laravelphp (10) RabbitMQ (3) Elasticsearch (1) redis (2) Raspberry (4) Padrao de design (4) JQuery (1) angularjs (4) Dicas (43) Kubernetes (3) vscode (2) backup (1) angular (3) servers (2) pipelines (1) AppSec (1) DevSecOps (4) rust (1) RustLang (1) Mozilla (1) algoritimo (1) sqlite (1) Passport (2) jwt (5) security (2) translate (1) kube (2) iot (1) politica (2) bolsonaro (1) flow (1) podcast (1) Brasil (1) containers (3) traefik (1) networking (1) host (1) POO (2) microservices (2) bug (1) cqrs (1) arquitetura (3) Architecture (4) sail (3) militar (1) artigo (1) economia (1) forcas armadas (1) ffaa (1) autenticacao (2) autorizacao (2) authentication (4) authorization (3) NoCookies (1) wsl (4) memcached (1) macos (2) unix (2) kali-linux (1) linux-tools (5) apple (1) noticias (2) composer (1) rancher (1) k8s (1) escopos (1) orm (1) jenkins (4) github (5) gitlab (3) queue (1) Passwordless (1) sonarqube (1) phpswoole (1) laraveloctane (1) Swoole (1) Swoole (1) octane (1) Structurizr (1) Diagramas (1) c4 (1) c4-models (1) compactar (1) compression (1) messaging (1) restfull (1) eventdrive (1) services (1) http (1) Monolith (1) microservice (1) historia (1) educacao (1) cavalotroia (1) OOD (0) odd (1) chatgpt (1) openai (3) vicuna (1) llama (1) gpt (1) transformers (1) pytorch (1) tensorflow (1) akitando (1) ia (1) nvidia (1) agi (1) guard (1) multiple_authen (2) rpi (1) auth (1) auth (1) livros (2) ElonMusk (2) Oh My Zsh (1) Manjaro (1) BigLinux (2) ArchLinux (1) Migration (1) Error (1) Monitor (1) Filament (1) LaravelFilament (1) replication (1) phpfpm (1) cache (1) vpn (1) l2tp (1) zorin-os (1) optimization (1) scheduling (1) monitoring (2) linkedin (1) community (1) inteligencia-artificial (2) wsl2 (1) maps (1) API_KEY_GOOGLE_MAPS (1) repmgr (1) altadisponibilidade (1) banco (1) modelagemdedados (1) inteligenciadedados (4) governancadedados (1) bancodedados (2) Observability (1) picpay (1) ecommerce (1) Curisidades (1) Samurai (1) KubeCon (1) GitOps (1) Axios (1) Fetch (1) Deepin (1) vue (4) nuxt (1) PKCE (1) Oauth2 (2) webhook (1) TypeScript (1) tailwind (1) gource (2)

New Articles



Get Latest Updates by Email