¿Hay alguna manera de ver la variable de entorno de otro usuario? Quiero hacer eso como root, así que supongo que los permisos no serán un problema.
Para el usuario mismo, uso echo $PATH
o set | grep PATH
(o set
cuando no recuerdo el nombre de la variable). ¿Cuál sería una instrucción similar para otro usuario?
Por lo que vale, estoy en Ubuntu Server 13.04.
echo $MAIL
, pero pensé que podría haber un acceso directo..forward
)? Los usuarios a menudo establecen algunas variables en sus.profile
u otros archivos de configuración, y no hay forma de enumerarlas todas de manera confiable. De nuevo, ¿qué problema estás tratando de resolver?Respuestas:
Otra opción es usar
env
. Ejecute esto comoroot
:Por ejemplo
fuente
HOME=/root
. Ese es el directorio inicial de la raíz, pero es no mi directorio estándar. Si desea conocer el entorno que obtendría un usuario en particular cuando inicie sesión, debe ejecutar los scripts de inicio del shell de inicio de sesión de este usuario en particular (y recuerde que su shell de inicio de sesión puede ser diferente de su shell de inicio de sesión).root
inicia sesión desde el administrador de inicio de sesión? Funciona bien si me dejo caer en un tty e inicio sesión comoroot
.env | grep HOME
y obtengoHOME=/home/uwe
; Ejecutosu
y luego una vez másenv | grep HOME
y obtengoHOME=/root
, luego corrosudo -u uwe env | grep HOME
y sigo obteniendoHOME=/root
.xterm
lugar de mi terminal habitual) y obtuve el resultado esperado.sudo
establece la variable INICIO solo si la-H
opción está presente o si la entrada correspondiente/etc/sudoers
está establecida. Parece que nuestros archivos sudoers difieren. De todos modos, probablemente sea una buena idea usar-H
aquí, y posiblemente también-i
.Para un usuario, puede hacer lo siguiente:
Lista $ PATH de todos los usuarios:
@Camil Staps
. ~/.profile
Es un truco que aprendo de mi persona favorita, Peteris Krumins. Explicó el truco aquí . Tal vez la versión bash posterior tenía construcción con opciónNON_INTERACTIVE_LOGIN_SHELLS
.fuente
$PATH
también funciona sin la. ~/.profile;
parte: ¿para qué sirve?$PATH
incluso sin abastecimiento~/.profile
, pero es casi seguro que no sea el que deseas (= el valor que este usuario vería cuando iniciara sesión). Incluso el abastecimiento~/.profile
no es totalmente confiable, ya que el usuario puede usar un shell cuyo archivo de inicio es diferente~/.profile
.~/.profile
absoluto. Pero en cualquier caso, el comportamiento desudo
se puede configurar bastante en/etc/sudoers
(vea mi discusión con terdon), por lo que cuando nuestros sistemas se comportan de manera diferente, probablemente sea causado por diferencias en los archivos de configuración.desde la raíz puede
su -
al usuario y luego grep la variable de entorno que desea ver:su - <username> -c 'echo $PATH'
fuente
runuser -l <username> -c "env | grep <var>" | cut -d '=' -f 2
funciona bien para mí. Si no es root, necesita prefijar el comando consudo
.