Bash/POSIX shell. It's necessary because it's the standard, and you can't expect computers to have a better shell by default. It's good enough for simple things that scripts for it grow complex enough to warrant something better. It's only bearable because it's familiar after years of experience. It's terrible because it does everything to make it hard to write scripts. Three syntaxes for using variables, and only on…
I also hate it. It’s not the worst piece of software I use everyday, but every time I need to do something more complex than completely routine I find myself fiddling much more than I should have to.