Basically Linux is a unix.
There are more unixes with different kernels (like solaris and bsd)..

Shell programming is basically the same on any unix..
There are a couple of shells.. ((b)a)sh, (t)csh and ksh are well known.. And all slightly different..

I only know a bit of bash programming/scripting..

Linux kernel programming is done in C.
More info http://www.kernelhacking.org/