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/profileprimero, y luego el primero que encuentra de:~/.bash_profile,~/.bash_loginy~/.profile. - Shell interactivo pero sin inicio de sesión (
-i) lee/etc/bash.bashrcy~/.bashrc, en ese orden (a menos que el--rcfilese usa la opción y le dice que busque en otra parte). - Conchas no interactivas, p. comenzó desde dentro de otro programa sin usar
-lo-ibanderas, lee el archivo especificado en elBASH_ENVvariable de entorno. - Cuando se ejecuta como
shcomo shell de inicio de sesión, leerá/etc/profiley~/.profile, en ese orden. - Cuando se ejecuta como
shcomo no inicio de sesión interactivo, lee el archivo especificado enENV.