GNU/Linux >> Tutoriales Linux >  >> Linux

.bash_profile no se obtiene cuando se ejecuta Su?

Tengo un usuario, digamos user1 , que tiene modificaciones en su .bash_profile , uno de ellos cambiando el PATH , por ejemplo:export PATH=/some/place:$PATH . Este cambio funciona bien si inicio sesión como user1 o haz un su - user1 .

Pero si trato de ejecutar un comando a través de su como root , por ejemplo:

su -c test.sh oracle

(la prueba contiene echo $PATH )

No parece tener el PATH modificado (o PATH de root , para esa materia). También intenté copiar .bash_profile a .profile , fue en vano.

¿Por qué sucede esto?

Respuesta aceptada:

Usando su sin -l o - inicia bash como un shell interactivo, pero sin inicio de sesión, que no lee ninguno de los archivos que especificó. Usa el -l o - opción o poner la configuración relevante en /root/.bashrc .

Resumen rápido de archivos de configuración:

  • Concha de inicio de sesión (-l /--login ) lee /etc/profile primero, y luego el primero que encuentra de:~/.bash_profile , ~/.bash_login y ~/.profile .
  • Shell interactivo pero sin inicio de sesión (-i ) lee /etc/bash.bashrc y ~/.bashrc , en ese orden (a menos que el --rcfile se usa la opción y le dice que busque en otra parte).
  • Conchas no interactivas, p. comenzó desde dentro de otro programa sin usar -l o -i banderas, lee el archivo especificado en el BASH_ENV variable de entorno.
  • Cuando se ejecuta como sh como shell de inicio de sesión, leerá /etc/profile y ~/.profile , en ese orden.
  • Cuando se ejecuta como sh como no inicio de sesión interactivo, lee el archivo especificado en ENV .

Linux
  1. Sugerir la instalación de paquetes al ejecutar un comando no disponible

  2. Linux:¿cuándo no debo matar -9 un proceso?

  3. ¿Por qué se podría agregar ~/.profile a ~/.bash_profile?

  4. Apache/Mysql no se está ejecutando. ¿Equivocado?

  5. El servicio MongoDB no se ejecuta en Fedora

¿No se puede eliminar el archivo, incluso cuando se ejecuta como raíz?

Tomcat funcionando, pero el puerto 8080 no responde

CronJob no se ejecuta

El script Nohup para Python no funciona cuando se ejecuta en segundo plano con &

Código de Python para verificar si el servicio se está ejecutando o no.

comando no encontrado al usar sudo