¿Cuál es la diferencia entre `su -` y` su --login`?


15

Desde sula página de manual de:

For  backward  compatibility, su defaults to not change the current directory
and to only set the environment variables HOME and SHELL (plus USER and LOGNAME
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.

...

-, -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

        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

Es difícil saber si hay alguna diferencia entre -y --login(o supuestamente solo -l). A saber, la página del manual dice "en lugar de su acceso directo -", pero todas estas opciones están agrupadas y no veo una explicación de la diferencia, si es que existe.

UPD Revisé la pregunta, que se supone que resuelve mi problema . La pregunta es básicamente sobre la diferencia entre suy su -. Y estoy preguntando sobre la diferencia entre su -y su --login. Entonces no, no lo resuelve en absoluto.


44
Creo que esta oración está mal escrita. Debería serTo avoid side effects caused by mixing environments use --login option or its equivalent -. The first form is recommended because - can be placed only just before username.
jimmij

No sé su definición de duplicado, pero no considero mi pregunta como tal. La pregunta que sugiere es básicamente sobre la diferencia entre suy su -. Y estoy preguntando sobre la diferencia entre su -y su --login. ¿Que me estoy perdiendo aqui?
x-yuri

Respuestas:


11

La entrada manual de Debian parece ser más esclarecedora:

   -, -l, --login
       Provide an environment similar to what the user would expect had the user logged
       in directly.

       When - is used, it must be specified before any username. For portability it is
       recommended to use it as last option, before any username. The other forms (-l
       and --login) do not have this restriction.

Yo diría que se complementan entre sí. El de aguas arriba sugiere evitar el uso -. Hablando de eso, ¿por qué "antes de cualquier nombre de usuario"?
x-yuri

77
"antes de cualquier nombre de usuario" se puede reformular como "antes del nombre de usuario, si corresponde"
Mark Plotnick

@ MarkPlotnick Parece que te equivocas .
x-yuri

@ x-yuri toda esa discusión, llega a la conclusión de que Mark Plotnick es correcto, y el manual es, en el mejor de los casos, lógicamente vago. (aunque la mayoría de nosotros no nos
dimos

I disagree, however, with the general point that, "before any username" can be rephrased as "before the username, if any." Perhaps Mr. Plotnik meant that the man page* should have rephrased the text using his suggestion, but the two phrases are not equivalent (as I explained at the beginning of this post).Es decir, Mark Plotnick sabe cómo sufunciona, pero "antes de cualquier nombre de usuario"! = "Antes del nombre de usuario, si lo hay". Esa es la conclusión a la que llegó la discusión, tal como la veo.
x-yuri

0

no hay diferencia, es como correr;

echo bob | grep -v bob
echo bob | grep --invert-match bob

solo taquigrafía ...


3
Creo que está pidiendo una aclaración para evitar los efectos secundarios causados ​​por la mezcla de entornos. parte de la página del manual. ¿Qué efectos secundarios?
Zachary Brady

Realmente no. Los efectos secundarios son más o menos clara, y se aplican cuando no se utiliza cualquiera de -, -l, --login. Mi pregunta es sobre por qué no se recomienda su uso -, en lugar de '-l , and --login`.
x-yuri

el problema de portabilidad sería si está escribiendo un script, no recomendaría usar su en absoluto en un script, pero podría haber un caso de uso, independientemente de que la opción más portátil en un script sería -l o --login
mikejonesey

¿Por qué no usarlo sual escribir un guión?
x-yuri

¿Por qué no escribir un script como el usuario propietario de los datos? Es muy raro que haya un caso de uso en el que necesite realizar acciones como otro usuario, y luego esté sudo (que tiene limitaciones en los comandos y parámetros utilizados).
mikejonesey
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.