Creating a Shell

I wanted to know how to build a complete shell like bash, zsh, etc... I would like to know where can I learn how to build such a shell. Any guidance will help.

You could have a look at nushell, which is a quite popular shell written in Rust. It's not exactly a tutorial on how to write your own shell, but it is fairly well documented IMO and maybe will give you an idea on where to begin? JT, who works on nushell, also has a few blog posts about it that may be helpful to you.