Because of this I don't shower until I need to wash my hair
You're doing it wrong
Could it be you're making your scalp sweaty by being in a hot shower with a cap on, and thus just adding to your head stink? Even if you aren't shampooing, you may want to rinse your hair, to remove excess sweat, dirt, and some oil.
What's that stink
So, you take a shower, and your hair isn't dirty, but then when you get out your hair is?
Its probably your shower cap making your hair greasy. Get disposable ones, or wash yours after each use.
Wash your body every single day with your hair in a shower cap. But only wash your HAIR 4 days out of the 7 days of the week to keep it from getting stripped and dried out. When you wash hair too often this is very bad because it actually makes your hair produce more oil from being dried out.
just put your hair in a bun (I assume you have hair long enough for this). Its probably the shower caps material, or it can be the reaction from the steam and the cap.
In the old days, folks would not shower much but take baths, and often washed hair in sink. Nowadays, it's good to shower everyday, ok to skip if you are sick or extremely lazy that day, lol. I wash my hair everyday in shower. It prevents dandruff and keeps it healthy looking. Using a wash rag with soap to scrub skin will remove dead cells which cause odor, and stimulates skin to regenerate. It also prevents ring around the collar, lol.
Wash your hair with a gentle shampoo or use dry shampoo. I wouldn't wait to shower until you wash your hair, because then your body will stink.
If your hair gets greasy that quickly, you should be washing it more often, and using a good conditioner. If you are not showering daily this may be part of the problem. My wife showers daily, but only washes her hair every other time.