I think the word "should" is properly a ternary relation
If A wants B, then they should do C <=> If A does C and B doesn't happen, then it's not A's fault <=> If A does C and B doesn't happen, then any person Z (in the set of people we care about) who wants to appear reasonable should not blame A in a conversation about what happened.
So really, "should" is defined in terms of expecting anyone who wants to be reasonable not to blame you.
Many people think "should" is some absolute thing, such as "A should do C" regardless of what they want. It seems to me that absolute morality requires tons of adhoc exceptions and rules, and that relative morality gives a much more fitting description of what happens.
If A wants B, then they should do C <=> If A does C and B doesn't happen, then it's not A's fault <=> If A does C and B doesn't happen, then any person Z (in the set of people we care about) who wants to appear reasonable should not blame A in a conversation about what happened.
So really, "should" is defined in terms of expecting anyone who wants to be reasonable not to blame you.
Many people think "should" is some absolute thing, such as "A should do C" regardless of what they want. It seems to me that absolute morality requires tons of adhoc exceptions and rules, and that relative morality gives a much more fitting description of what happens.