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 elBASH_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 enENV
.