We <3 shellz
What's a shell? It is an interface to interact with computer services and systems. Examples of a shell are bash, sh, and zsh. These interfaces use PATH to load up binaries with make up the commands you can run in your terminal. You can check out /usr/local/bin to check out some of the binaries which make up shell commands.
The shell is accessed by opening a Terminal app. Out of the box Fedora comes with Gnome Terminal and I like to swap it out for Terminator.
sudo dnf install terminator
The next thing is getting Zsh installed and hook it up with some plugins and a sweet theme. The cool kid on the block for shells is Zsh and the first thing is to get it installed. When it comes to Fedora you want to run a dnf install but this will vary depending on your system.
sudo dnf install zsh
chsh -s $(which zsh)
You can check out your home directory for a .zshrc file. This is the file that now controls your shell environment default settings. You can setup plugins, aliases, and other items you need to run every time you open a terminal.
For easy setup I default to zgen. It makes install plugins and themes really easy. https://github.com/tarjoilija/zgen
Check the bottom of the read me for their example zshrc file. Back up your current zshrc file and then create a new one with the example and modify it to remove the example lines. I move the plugin from the bulk load into the /path/to/super-secret-private-plugin section and delete the EOF section (EOFs are ugly sorry not sorry).
# load zgen
source "${HOME}/.zgen/zgen.zsh"
# if the init scipt doesn't exist
if ! zgen saved; then
echo "Creating a zgen save"
zgen oh-my-zsh
# plugins
zgen oh-my-zsh plugins/git
zgen oh-my-zsh plugins/sudo
zgen oh-my-zsh plugins/command-not-found
zgen load zsh-users/zsh-syntax-highlighting
zgen load zsh-users/zsh-history-substring-search
# completions
zgen load zsh-users/zsh-completions src
# theme
zgen oh-my-zsh themes/arrow
# save all to init script
zgen save
fi
Take yourself through the interwebz and find a nice theme for zsh. I like to use this one. https://github.com/denysdovhan/spaceship-prompt
Check the readme and look for the zgen section and copy it over to zshrc file replacing the theme section at the bottom.
zgen init
zgen update
Restart your shell and you should be good to go.
The last thing for someone really diving into this is to customize the plugins you use. Check out this page for the cool things you can add to your shell.
Cool points, back up your zshrc you've customized to a github gist for later use.
Custom Setup

I work on multiple google accounts on my linux setup so its a plus to be able to see which gcloud account I am using. The cloud and the name represent that. I also do most of my work on kubernetes so the indicator on the right will show minikube or the k8 cluster I am currently hooked into with kubectx. An example of the zshrc config to achieve this.
autoload -U colors; colors
RPROMPT='%{$fg[blue]%}($ZSH_KUBECTL_PROMPT)%{$reset_color%}'
SPACESHIP_PROMPT_ORDER=(
time # Time stampts section
user # Username section
host # Hostname section
dir # Current directory section
git # Git section (git_branch + git_status)
hg # Mercurial section (hg_branch + hg_status)
package # Package version
node # Node.js section
ruby # Ruby section
elixir # Elixir section
xcode # Xcode section
swift # Swift section
golang # Go section
php # PHP section
rust # Rust section
haskell # Haskell Stack section
julia # Julia section
docker # Docker section
gcloud # Gcloud section
aws # Amazon Web Services section
venv # virtualenv section
conda # conda virtualenv section
pyenv # Pyenv section
dotnet # .NET section
ember # Ember.js section
kubectl # Kubectl context section
exec_time # Execution time
line_sep # Line break
battery # Battery level and status
vi_mode # Vi-mode indicator
jobs # Backgound jobs indicator
exit_code # Exit code section
char # Prompt character
)
If you have any questions, tips, or tricks please comment below.
Leave a Comment