I want to have one .bash_profile works on multiple platform, ubuntu, debian, redhat, cygwin, osx. So how should I organize .bash_profile?
It can be multiple files in some subdir

Let me brief you:
what i want is a way to organize bash_profile across platforms so I can use one set of profiles and use everywhere, e.g., how to identify different platforms.

Please help me.

Most options for .bash_profile that are cross-platform compatible, though you may need to script something to detect paths for different OS's. What kind of profile options are you looking for?

As far as OS detection, here's a link that should get you started: Click Here

I hope this helps!