2 votos

El comportamiento de inicio de sesión de shell vs Linux, 'sh-c'

Tengo un aparentemente válido comando que funciona bien en Linux, pero no en OSX, y me gustaría saber por qué.

sudo su - validusername sh -c 'whoami'

En Linux, esta le echo 'validusername' en la consola. OSX sin embargo, muestra un error:

/bin/sh: /bin/sh: cannot execute binary file

Es este un OSX particularidad? O es debido al hecho de que OSX usa bash 3.2, mientras que nuestras cajas de linux están en bash 4.x?

EDIT: se me ocurrió una solución rápida (sudo -u), principalmente estoy interesado en el aprendizaje de por qué sucedió esto. Gracias!

2voto

sdmeyers Puntos 1356

trate de

sudo -su validusername sh -c 'whoami'

0voto

Mark Puntos 6

o:

sudo su - username -c whoami

El su página man dice

 su [-] [-c class] [-flms] [login [args]]

...

Si el facultativo de los argumentos son siempre en la línea de comandos, se pasan a el shell de inicio de sesión de inicio de sesión de destino. Tenga en cuenta que toda la línea de comandos argu- ments antes de la meta nombre de inicio de sesión son procesados por su sí mismo, todo lo después de que el destino nombre de inicio de sesión se pasa a la shell de inicio de sesión.

0voto

Tony Williams Puntos 4903

OK, para empezar no necesitas tanto 'su' y 'sudo' - sólo el 'su' va a hacer. También dudo que bajo Linux que tiene la 'sh', ya que el efecto de la '-' es ejecutar un shell de inicio de sesión, pero lo que en la tierra a los pobres shell intenta en su comando con ambos, nadie lo sabe.

Yo vivo en un mundo donde nos quite sudo de nuestras cajas de Linux, así que no puedo comprobar si el comando realmente funciona.

Bajo OS X y Linux el comando su - username -c 'whoami' se hacen eco de nombre de usuario.

Hay algunas diferencias entre el 'su' y 'sudo' encontrado en Linux y OS X, pero son debido a las diferencias entre nuestros relajado, en la Costa Oeste, BSD, la versión de Unix y el tenso, en la Costa Este, AT&T derivados de las utilidades de Gnu utilizado en el promedio de la distro de Linux en lugar de bash versiones, ya que ni es un bash builtin.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X