So I've read a lot but am still confused. is BASH specifically Unix while shell, terminal, commandline are all 'generic terms'? For example, if I say "shell", it is not yet determined that if I'm specifically referring to Linux shell or MacOS shell or some other operating system's shell right? on the other hand, if I say BASH, then I'm only talking about Unix. right? Also very in-depth explanation of the relations and slightest differences between all of them would be appreciated.