Разницу между must и have to мы уже разобрали. Посмотрим, чем от них отличаются модальный глагол should и оборот be supposed to. Главное отличие в том, что они не выражают долженствования, хотя и могут переводиться на русский язык со словами “нужно” или “должен”.
Should – это модальный глагол, используемый (в частности) для выражения совета, пожелания, рекомендации. То есть не “ты должен”, а “тебе следует”:
You should try this cake, it’s delicious. – Тебе следует (ты должен \ тебе стоит \ тебе нужно) попробовать этот пирог, он очень вкусный.
We shouldn’t leave the door open. It’s cold out there. – Нам не стоит (не следует) оставлять дверь открытой. Снаружи холодно.
Выражения с оборотом be supposed to часто переводятся со словом “должен”, но это не “должен” в значении “обязан, вынужден”, а “должен” в значении “по идее должен” или “подразумевается, что”. Разница огромная.
I saw you outside smoking, but you were supposed to be working. – Я видел, как ты курил на улице, то ты ведь (по идее) должен был работать (но не работал).
This is supposed to be the best day in my life, but I’m not feeling happy. – Это должен быть (по идее) лучший день в моей жизни, но я не чувствую себя счастливым.