In this article, we are going to learn about how to install ZSH on Fedora. And how to change the default shell to ZSH on Fedora. ZSH (Z Shell) is a better alternative to the Bash shell, in ZSH we can modify the terminal and make our terminal as colorful as we like.
What is ZSH
ZSH also known as Z shell, is a Unix shell that that is an extended version of the Bourne Shell (sh), with many new features and supports many plugins and themes. It is the best alternative to Bash with a cool and stylish shell interface including some features of Bash, KSH, and tcsh.
Why ZSH?
ZSH is an awesome shell that just makes everything a bit simpler with its plugins like auto-suggestions, syntax-completing tasks, etc. ZSH has many features like autosuggestion, spelling correction, auto jump, syntax-highlighting, or many more plugins and theme support.
Before installing Zsh: Dependencies
Packages that are supportive to Zsh you need to install:
- Install the git, wget, curl packages.
- ZSH– ZSH shell.
- Oh My Zsh – it is an open-source, community-driven framework for managing your zsh configuration
- zsh-syntax-highlighting – This package provides syntax highlighting for the shell Zsh.
- zsh-autosuggestions – It suggests commands as you type based on history and completions.
Update the Fedora
First of all we have to update our Fedora using following command:
$ sudo dnf update
How To Install ZSH on Fedora
We have to install the ZSH using this command:
$ sudo dnf install zsh
[linuxips@fedora ~]$ sudo dnf install zsh Last metadata expiration check: 0:16:29 ago on Sun 28 Aug 2022 03:31:00 AM IST. Dependencies resolved. ================================================================================ Package Architecture Version Repository Size ================================================================================ Installing: zsh x86_64 5.8.1-1.fc36 fedora 2.9 M Transaction Summary ================================================================================ Install 1 Package Total download size: 2.9 M Installed size: 7.6 M Is this ok [y/N]: Y Downloading Packages: zsh-5.8.1-1.fc36.x86_64.rpm 187 kB/s | 2.9 MB 00:16 -------------------------------------------------------------------------------- Total 173 kB/s | 2.9 MB 00:17 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : zsh-5.8.1-1.fc36.x86_64 1/1 Running scriptlet: zsh-5.8.1-1.fc36.x86_64 1/1 Verifying : zsh-5.8.1-1.fc36.x86_64 1/1 Installed: zsh-5.8.1-1.fc36.x86_64 Complete! [linuxips@fedora ~]$
Complete Switch from BASH to ZSH
Now we have to completely switch Bash to zsh so you have to type the following command:
$ sudo chsh -s /bin/zsh <username>
And after that, you have to log out from the current user and log in again. Your ZSH is installed. You can check by this:
$ sudo cat /etc/passwd
Here you can check your user at the end from /bin/bash to /bin/zsh. So now your user shell completely changed Bash to Zsh.
Note: Reboot you Fedora after this changes. And then open the terminal and choose the 0 option there first time.
Change the ZSH Themes
Install oh-my-zsh
oh-my-zsh Vai Curl
$ sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
Installing oh-my-zsh Vai wget
$ sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"
Install zsh-autosuggestions
$ git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
Install zsh-syntax-highlighting
$ git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
Change the Zsh Themes
Now you have installed all the dependencies which are required, so now we will change the ZSH theme you have to edit the .zshrc file to change the themes.
$ sudo nano /home/username/.zshrc
Selecting a Theme
Oh-My-Zsh is the main plugin framework for ZSH, and it comes with many pre-built plugins and themes, you have to just change the name of the theme ZSH_THEME=”robbyrussell” and your Zsh theme will be changed.
➜ ~ ls /home/linuxips/.oh-my-zsh/themes
3den.zsh-theme kennethreitz.zsh-theme
adben.zsh-theme kiwi.zsh-theme
af-magic.zsh-theme kolo.zsh-theme
afowler.zsh-theme kphoen.zsh-theme
agnoster.zsh-theme lambda.zsh-theme
alanpeabody.zsh-theme linuxonly.zsh-theme
amuse.zsh-theme lukerandall.zsh-theme
apple.zsh-theme macovsky-ruby.zsh-theme
arrow.zsh-theme macovsky.zsh-theme
aussiegeek.zsh-theme maran.zsh-theme
avit.zsh-theme mgutz.zsh-theme
awesomepanda.zsh-theme mh.zsh-theme
bira.zsh-theme michelebologna.zsh-theme
blinks.zsh-theme mikeh.zsh-theme
bureau.zsh-theme miloshadzic.zsh-theme
candy-kingdom.zsh-theme minimal.zsh-theme
candy.zsh-theme mira.zsh-theme
clean.zsh-theme mlh.zsh-theme
cloud.zsh-theme mortalscumbag.zsh-theme
crcandy.zsh-theme mrtazz.zsh-theme
crunch.zsh-theme murilasso.zsh-theme
cypher.zsh-theme muse.zsh-theme
dallas.zsh-theme nanotech.zsh-theme
darkblood.zsh-theme nebirhos.zsh-theme
daveverwer.zsh-theme nicoulaj.zsh-theme
dieter.zsh-theme norm.zsh-theme
dogenpunk.zsh-theme obraun.zsh-theme
dpoggi.zsh-theme peepcode.zsh-theme
dstufft.zsh-theme philips.zsh-theme
dst.zsh-theme pmcgee.zsh-theme
duellj.zsh-theme pygmalion-virtualenv.zsh-theme
eastwood.zsh-theme pygmalion.zsh-theme
edvardm.zsh-theme random.zsh-theme
emotty.zsh-theme re5et.zsh-theme
essembeh.zsh-theme refined.zsh-theme
evan.zsh-theme rgm.zsh-theme
fino-time.zsh-theme risto.zsh-theme
fino.zsh-theme rixius.zsh-theme
fishy.zsh-theme rkj-repos.zsh-theme
flazz.zsh-theme rkj.zsh-theme
fletcherm.zsh-theme robbyrussell.zsh-theme
fox.zsh-theme sammy.zsh-theme
frisk.zsh-theme simonoff.zsh-theme
frontcube.zsh-theme simple.zsh-theme
funky.zsh-theme skaro.zsh-theme
fwalch.zsh-theme smt.zsh-theme
gallifrey.zsh-theme Soliah.zsh-theme
gallois.zsh-theme sonicradish.zsh-theme
garyblessington.zsh-theme sorin.zsh-theme
gentoo.zsh-theme sporty_256.zsh-theme
geoffgarside.zsh-theme steeef.zsh-theme
gianu.zsh-theme strug.zsh-theme
gnzh.zsh-theme sunaku.zsh-theme
gozilla.zsh-theme sunrise.zsh-theme
half-life.zsh-theme superjarin.zsh-theme
humza.zsh-theme suvash.zsh-theme
imajes.zsh-theme takashiyoshida.zsh-theme
intheloop.zsh-theme terminalparty.zsh-theme
itchy.zsh-theme theunraveler.zsh-theme
jaischeema.zsh-theme tjkirch_mod.zsh-theme
jbergantine.zsh-theme tjkirch.zsh-theme
jispwoso.zsh-theme tonotdo.zsh-theme
jnrowe.zsh-theme trapd00r.zsh-theme
jonathan.zsh-theme wedisagree.zsh-theme
josh.zsh-theme wezm+.zsh-theme
jreese.zsh-theme wezm.zsh-theme
jtriley.zsh-theme wuffers.zsh-theme
juanghurtado.zsh-theme xiong-chiamiov-plus.zsh-theme
junkfood.zsh-theme xiong-chiamiov.zsh-theme
kafeitu.zsh-theme ys.zsh-theme
kardan.zsh-theme zhann.zsh-theme
Oh-My-Zsh plugins:
Oh My Zsh comes with a large number of plugins to take advantage of. You can take a look at the plugins directory ls /home/linuxips/.oh-my-zsh/plugins
➜ ~ ls /home/linuxips/.oh-my-zsh/plugins/
adb/ docker-machine/ history-substring-search/ osx/ sudo/
ag/ doctl/ hitchhiker/ otp/ supervisor/
aliases/ dotenv/ hitokoto/ pass/ suse/
alias-finder/ dotnet/ homestead/ paver/ svcat/
ansible/ droplr/ httpie/ pep8/ svn/
ant/ drush/ invoke/ percol/ svn-fast-info/
apache2-macports/ eecms/ ionic/ per-directory-history/ swiftpm/
arcanist/ emacs/ ipfs/ perl/ symfony/
archlinux/ ember-cli/ isodate/ perms/ symfony2/
asdf/ emoji/ iterm2/ phing/ systemadmin/
autoenv/ emoji-clock/ jake-node/ pip/ systemd/
autojump/ emotty/ jenv/ pipenv/ taskwarrior/
autopep8/ encode64/ jfrog/ pj/ terminitor/
aws/ extract/ jhbuild/ please/ term_tab/
battery/ fabric/ jira/ pm2/ terraform/
bazel/ fancy-ctrl-z/ jruby/ pod/ textastic/
bbedit/ fasd/ jsontools/ postgres/ textmate/
bedtools/ fastfile/ jump/ pow/ thefuck/
bgnotify/ fbterm/ kate/ powder/ themes/
boot2docker/ fd/ keychain/ powify/ thor/
bower/ firewalld/ kitchen/ profiles/ tig/
branch/ flutter/ knife/ pyenv/ timer/
brew/ fnm/ knife_ssh/ pylint/ tmux/
bundler/ forklift/ kops/ python/ tmux-cssh/
cabal/ fossil/ kubectl/ rails/ tmuxinator/
cake/ frontend-search/ kubectx/ rake/ torrent/
cakephp3/ fzf/ kube-ps1/ rake-fast/ transfer/
capistrano/ gas/ lando/ rand-quote/ tugboat/
cargo/ gatsby/ laravel/ rbenv/ ubuntu/
cask/ gb/ laravel4/ rbfu/ ufw/
catimg/ gcloud/ laravel5/ react-native/ universalarchive/
celery/ geeknote/ last-working-dir/ rebar/ urltools/
chruby/ gem/ lein/ redis-cli/ vagrant/
chucknorris/ genpass/ lighthouse/ repo/ vagrant-prompt/
cloudfoundry/ gh/ lol/ ripgrep/ vault/
codeclimate/ git/ lxd/ ros/ vim-interaction/
coffee/ git-auto-fetch/ macports/ rsync/ vi-mode/
colemak/ git-escape-magic/ magic-enter/ ruby/ virtualenv/
colored-man-pages/ git-extras/ man/ rust/ virtualenvwrapper/
colorize/ gitfast/ marked2/ rustup/ vscode/
command-not-found/ git-flow/ mercurial/ rvm/ vundle/
common-aliases/ git-flow-avh/ meteor/ safe-paste/ wakeonlan/
compleat/ github/ microk8s/ salt/ wd/
composer/ git-hubflow/ minikube/ samtools/ web-search/
copybuffer/ gitignore/ mix/ sbt/ wp-cli/
copydir/ git-lfs/ mix-fast/ scala/ xcode/
copyfile/ git-prompt/ mongocli/ scd/ yarn/
cp/ glassfish/ mosh/ screen/ yii/
cpanm/ globalias/ mvn/ scw/ yii2/
dash/ gnu-utils/ mysql-macports/ sdk/ yum/
debian/ golang/ n98-magerun/ sfdx/ z/
deno/ gpg-agent/ nanoc/ sfffe/ zbell/
dircycle/ gradle/ ng/ shell-proxy/ zeus/
direnv/ grails/ nmap/ shrink-path/ zoxide/
dirhistory/ grc/ node/ singlechar/ zsh-interactive-cd/
dirpersist/ grunt/ nomad/ spring/ zsh-navigation-tools/
django/ gulp/ npm/ sprunge/ zsh_reload/
dnf/ hanami/ npx/ ssh-agent/
dnote/ helm/ nvm/ stack/
docker/ heroku/ oc/ sublime/
docker-compose/ history/ octozen/ sublime-merge/
Enabling Plugins
Once you select a plugin that you want to use with Oh My Zsh, you have to enable them in the .zshrc file. Open it with your favorite text editor and you have to see a spot to list all the plugins you want to load.
$ sudo nano /home/username/.zshrc
plugins=(git zsh-syntax-highlighting )
Save the file and use the new shell with a new theme and plugins.
Conclusion
If you want a custom terminal. So now you know how to install ZSH on Fedora. And you want to customize according to your need then you have to use ZSH with its themes and plugins. It is very easy to use and has time-saving themes. Many themes are available on the web where you have to simply download and use them without any problem. GOOD LUCK!
Related Linux Tutorials: