One shader for several meshes; common uniforms

If I were to create a shader object and then assign it to ‘shader’ attribute of several mesh objects, will it be the same shader program? That is, if I then assign some value to a uniform in the original shader object, will it be accessible when rendering all these meshes?
On a related note, what is the best way to go about making one uniform, say, a texture, accessible from multiple shader programs? For example, I am using shadowmapping and therefore need all the objects in the scene to access the shadow map which changes every frame; obviously, I do not want to load it into every shader program for every object.

@SamTheMadRabbit That’s exactly what you need to do. There is no global or shared uniform support in GLSL so you set it on every shader. You can share the same shader between multiple meshes (and they will use the current uniform values on the shader) though if that helps.