36

I have been using the default bash of linux for over 1 year and one of colleague recommended me switch over to using iTerm2 alongwith zsh and oh-my-zsh. He also recommended this post to install and configure those :

https://www.freecodecamp.org/news/how-to-configure-your-macos-terminal-with-zsh-like-a-pro-c0ab3f3c1156/

When i asked what are they the answer he gave me was kind of confusing, so i ask you overlords kind do tell mewhat actually those are and if you have some insights about what actually a bash is, i would be happy to learn that too :)

Thank you all Pawan

Pawan Saxena
  • 521
  • 1
  • 4
  • 14
  • Search for `terminal emulator` (iTerm), `shell` (zsh, bash), and `zsh package managers` (oh-my-zsh). The web has plenty of information on them. BTW, I also recommend this setup. Install emacs-doom as well, which is a config for the text editor emacs. – HappyFace Oct 19 '20 at 03:47

1 Answers1

83

When you are at a command line, typing in commands and reading output you are working in a program called a terminal (or console on windows). The terminal is taking your commands and forwarding them to a program, called a shell, who's job is to actually execute the commands you type in to the terminal and possibly print some output. The output from the shell is then displayed in your terminal window.

The terminal is like the web browser and the shell is like the javascript engine. Your browser takes your input (click, keypresses, mousemoves) and sends them along to javascript which processes those actions and the browser displays the results.

iTerm2 is a terminal emulator meant to be a replacement for macOS terminal and is far more feature rich. It's the terminal program providing you with a command line interface.

ZSH is a specific shell, as is bash, the same way linux is a specific operating system. There are different shells that provide different syntax, features and functionality. There's bash, cshell, fish, powershell, zsh and others.

Installing ZSH, you are essentially downloading a new program and telling your terminal to use that program (say, instead of bash) to process the commands and run scripts.

oh-my-zsh provides a way of managing your zsh configurations, themes and plugins to extend the look and functionality of your shell.

I can't reccomend this setup enough- it's like the cadillac of command lines. You have a good friend there.

tryexceptcontinue
  • 1,587
  • 15
  • 13
  • 5
    One thing to note is that you can swap out the terminal and the shell indepedently. For example, you can easily swithc to iTerm2 and still keep using bash or switch to zsh but keep using the current terminal. You might not get all features with some combination, but generally they are universally compatible. – Joachim Sauer Oct 12 '20 at 11:16
  • 3
    That's a good point for helping uncomplicate the topic. You can even switch shells while at a shell's command line by running the *other* shell as it were any other program/command – tryexceptcontinue Oct 12 '20 at 11:25
  • Thank you @tryexceptcontinue for the info. – Pawan Saxena Oct 13 '20 at 05:17
  • You're welcome @PawanSaxena ! If you're happy with the answer it'd be great if you went ahead and selected it as your accepted answer. Hope ZSH goes smoothly for you – tryexceptcontinue Oct 13 '20 at 05:42
  • Thank you @tryexceptcontinue for the info. – Hassam Saeed Aug 02 '21 at 19:27
  • This topic has confused me for ages! This was such a good explanation, especially the browser & javascript engine analogy. Thank you! – Subomi Oct 16 '22 at 08:57