Existe uma maneira de ver a variável de ambiente de outro usuário? Eu quero fazer isso como root, então as permissões não serão um problema, eu acho.
Para o próprio usuário, eu uso echo $PATH
or set | grep PATH
(ou set
quando não lembro o nome da variável). O que seria uma instrução semelhante para outro usuário?
Para o que vale a pena, eu estou no Ubuntu Server 13.04.
echo $MAIL
, fazer , mas pensei que poderia haver um atalho..forward
)? Os usuários geralmente definem algumas variáveis em seus.profile
ou outros arquivos de configuração e não há como enumerar todas elas com segurança. Novamente, que problema você está tentando resolver?Respostas:
Outra opção é usar
env
. Execute isso comoroot
:Por exemplo
fonte
HOME=/root
. Esse é o diretório home do root, mas é não meu diretório home padrão. Se você deseja conhecer o ambiente que um usuário específico obteria ao efetuar login, será necessário executar os scripts de inicialização do shell de login desse usuário específico (e lembre-se de que o shell de login dele pode ser diferente do shell de login).root
login a partir do gerenciador de login? Funciona bem se eu largar para um tty e efetuar login comoroot
.env | grep HOME
e consigoHOME=/home/uwe
; Eu executosu
e, em seguida, mais uma vezenv | grep HOME
e pegoHOME=/root
, então corrosudo -u uwe env | grep HOME
e ainda pegoHOME=/root
.xterm
vez do meu terminal habitual) e obtive o resultado esperado.sudo
define a variável HOME apenas se a-H
opção estiver presente ou se a entrada correspondente/etc/sudoers
estiver configurada. Parece que nossos arquivos sudoers diferem. Enfim, provavelmente é uma boa ideia usar-H
aqui, e possivelmente também-i
.Para um usuário, você pode fazer assim:
Listar $ PATH de todos os usuários:
@Camil Staps
. ~/.profile
é, portanto, um truque que aprendo com minha pessoa favorita, Peteris Krumins. Ele explicou o truque aqui . Talvez a versão mais recente do bash tivesse construído com opçãoNON_INTERACTIVE_LOGIN_SHELLS
.fonte
$PATH
também funciona sem a. ~/.profile;
peça - para que serve?$PATH
mesmo sem fornecimento~/.profile
, mas certamente não é o que você deseja (= o valor que esse usuário veria ao fazer login). Até o fornecimento~/.profile
não é totalmente confiável, pois o usuário pode usar um shell cujo arquivo de inicialização é diferente~/.profile
.~/.profile
. Mas, em qualquer caso, o comportamento desudo
pode ser bastante configurado/etc/sudoers
(consulte minha discussão com terdon); portanto, quando nossos sistemas se comportam de maneira diferente, isso provavelmente é causado por diferenças nos arquivos de configuração.da raiz você pode
su -
para o usuário e, em seguida, grep a variável de ambiente que deseja ver:su - <username> -c 'echo $PATH'
fonte
runuser -l <username> -c "env | grep <var>" | cut -d '=' -f 2
funciona bem para mim. Se você não é root, precisa prefixar o comando comsudo
.