It’s not even that Han was being evil. Greedo was straight up telling Han he was going to kill him. It’s Han just not being an idiot and thinking “I better wait for this guy that is saying he’s going to kill me to take a shot at me because I need to be 100% sure of his intentions.”
And it works so much better that way. Lucas decided at some point to remove all moral ambiguity from all of his characters and it’s nuts.
It’s not even that Han was being evil. Greedo was straight up telling Han he was going to kill him. It’s Han just not being an idiot and thinking “I better wait for this guy that is saying he’s going to kill me to take a shot at me because I need to be 100% sure of his intentions.”