Comportamiento de shell de inicio de sesión frente a Linux, 'sh -c'

2

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

sudo su - validusername sh -c 'whoami'

En Linux, esto hará eco de 'validusername' en la consola. Sin embargo, OSX muestra un error:

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

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

EDITAR: encontré una solución rápida ( sudo -u ), principalmente me interesa saber por qué sucedió esto. Gracias!

    
pregunta mikewaters 27.01.2014 - 23:26

3 respuestas

2

prueba

sudo -su validusername sh -c 'whoami'
    
respondido por el sdmeyers 28.01.2014 - 00:04
0

o:

sudo su - username -c whoami

La página de manual su dice

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

...

     

Si los argumentos opcionales se proporcionan en la línea de comando, se pasan a        El shell de inicio de sesión del inicio de sesión de destino. Tenga en cuenta que todos los argumentos de línea de comando        Antes de que el nombre de inicio de sesión de destino sea procesado por su, todo        después de que el nombre de inicio de sesión de destino se pase al shell de inicio de sesión.

    
respondido por el glenn jackman 28.01.2014 - 00:06
0

Bien, para empezar, no necesitas tanto 'su' como 'sudo', solo la 'su' servirá. También dudo que bajo Linux tenga el 'sh', ya que el efecto de '-' es ejecutar un shell de inicio de sesión, pero lo que demonios está intentando con su comando el shell pobre es algo que nadie sabe.

Vivo en un mundo en el que eliminamos sudo de nuestras cajas de Linux, por lo que no puedo verificar si tu comando realmente funciona.

Tanto en OS X como en Linux, el comando su - username -c 'whoami' hará eco del nombre de usuario.

Hay algunas diferencias entre 'su' y 'sudo' encontradas en Linux y OS X, pero se deben a las diferencias entre nuestra versión relajada, West Coast, BSD de Unix y la tensa, East Coast, AT & Las utilidades Gnu derivadas se utilizan en la distribución de Linux promedio en lugar de las versiones bash, ya que ninguna de ellas está integrada en bash.

    
respondido por el Tony Williams 28.01.2014 - 04:57

Lea otras preguntas en las etiquetas