Should I still be a programmer?

“I lack the fundamentals of Computer Science, the things every programmer should know: Algo’s, Data Structures, Operating Systems an understanding of compilers and being profficient with linux.”
Relax. That’s true for 99% of all programmers.

“Eventually I plan on going back to a real University and getting a CS degree”

Absolutely not necessary. You will probably learn more building anything than learning it in school.

“I’m starting to think I may have a learning dissability”

Maybe you do, maybe you don’t. Just because the rest of the world is quick to diagnose everything doesn’t mean you have to.

“I have come to accept that I’m really not smart. I’m slow, forgetful, concepts never seem to stick”

Your performance shortcomings could be for many reasons. Being “really not smart” is the least likely of any of them. They are much more likely caused by other things like uninteresting work, poor environment, personal issues, nasty people, or even health issues. Whether you’re “smart” or not, thinking that your aren’t is pretty much a guarantee for failure. Please don’t do that.

“I have started going through the basic Algo’s and Data structures again with a basic Java book about algorithms”
Sorry to say, but you’re doing it the hardest way you can. You don’t need a book; you need a project. I have achieved much, but have always had difficulty learning from books and theory. It’s hard! You need to find work where the things you need to learn will be required. Funny how quickly and easily you’ll find a way to learn them when you actually need them. I’m not sure how you should go about finding such work, but I know you’ll figure that out.

“I just don’t want to be a cargo cult programmer anymore.”

Good. That makes you normal.

“And finally trying to memorise all those linux commands I ALWAYS forget.”
Then use less commands. I have never used more that 10% of what was available in “any” technology and I always got the job done.
“I have to force myself”

This is the most important thing you have said. Have you ever actually enjoyed building stuff? Have you ever gotten really jazzed about the project you were working on? Have you ever lept up out of your seat and danced when you got something working?

If you answered “yes” to any of these questions, then you really do have the passion to be a programmer. Stop selling yourself short.
If you answered “yes” to none of these questions, then there’s no sense for you to continue wasting your time searching for the passion. If you haven’t experienced any by now, then you probably never will. No one should have to “force themself” to love what they’re doing. Find something else.