login
inicia um shell com um ambiente novo, descartando o atual.
su
inicia um shell usando o ambiente existente e modifica apenas as variáveis HOME, USER e SHELL.
Por exemplo,
> export foo=bar
> su <username>
> echo $foo
bar
mas:
> export foo=bar
> login <username>
> echo $foo
não imprime nada.
AFAIK, su -l
é equivalente a login
.