Qual é odistintoentre:
sudo su -
e
su -i
e onde um seria preferido ao outro?
-, -l, --login Start the shell as a login shell with an environment similar to a real login: o clears all the environment variables except TERM and variables specified by --whitelist-environment o initializes the environment variables HOME, SHELL, USER, LOGNAME, and PATH o changes to the target user's home directory o sets argv[0] of the shell to '-' in order to make the shell a login shell
e
su - run a command with substitute user and group ID
trechos da man su
página.
Responder1
Não há -i
argumento para o su
comando, então a diferença seria que um funciona e o outro não.
Se você quis dizer su -l
, ainda não funciona por padrão em uma caixa do Ubuntu, pois a root
conta está bloqueada e não há senha para inserir.
Não há diferença entre os argumentos -
e . -l
Ambas são variações da mesma opção. Na verdade, você incluiu a linha da man
página que nos diz isso em sua pergunta.
A diferença entre usar o argumento -
, -l
ou --login
(eles são todos iguais) e não usar nenhum argumento é explicada principalmente no trecho que você incluiu em sua postagem. Esta parte diz o que faz sem o argumento:
For backward compatibility, su defaults to not change the current directory and to only set the environment variables HOME and SHELL (plus USER and LOG‐
NAME if the target user is not root). It is recommended to always use the --login option (instead of its shortcut -) to avoid side effects caused by
mixing environments.
Observe que isso su
não é apenas para root
. Não significasuperusuáriocomo acontece com o sudo
comentário. Ele significausuário substitutoe você pode especificar o usuário que deseja usar como argumento para executar um comando como esse usuário