Comando no encontrado cuando se ejecuta con sudo bash

Comando no encontrado cuando se ejecuta con sudo bash

Entro a mi máquina y luego, para ejecutar algunos comandos, sudo bashprimero necesito hacerlo.

En una sesión de terminal interactiva, si hago esto:

[vagrant@33 ~]$ sudo bash
[root@33 vagrant]# which bundle
/opt/upnxt/rbenv-0.4.0-7/shims/bundle

las cosas funcionan. Pero si necesito hacer esto en una línea:

[vagrant@33 ~]$ sudo bash -c "whoami; which bundle"
root
which: no bundle in (/sbin:/bin:/usr/sbin:/usr/bin)

las cosas dejan de funcionar. ¿Por qué sucede esto y qué más debo hacer con el segundo escenario para poder ejecutarlo como el primero?

Respuesta1

Cuando llamas, sudo bashejecutas una nueva instancia de bash con user root environment. Pero si llama sudo bash -c "whoami; which bundle"al entorno, permanezca como para su usuario. Si no tienes intención de hacerlo puedes modificar última convocatoria por sudoopciones-i

-i,--acceso

Ejecute el shell especificado por la entrada de la base de datos de contraseñas del usuario de destino como shell de inicio de sesión. Esto significa que los archivos de recursos específicos de inicio de sesión, como.perfilo.accesoserá leído por el shell. Si se especifica un comando, se pasa al shell para su ejecución a través del comando-Copción. Si no se especifica ningún comando, se ejecuta un shell interactivo. sudointenta cambiar al directorio de inicio de ese usuario antes de ejecutar el shell. El comando se ejecuta con un entorno similar al que recibiría un usuario al iniciar sesión.Entorno de comandosección en elsudoers(5) el manual documenta cómo la opción -i afecta el entorno en el que se ejecuta un comando cuando se utiliza la política sudoers.

información relacionada