Como usar 'set | grep 'no script corretamente para obter um valor da variável DBUS_SESSION_BUS_ADDRESS?

0

GNU bash, versão 4.3.48 (1) -release (x86_64-pc-linux-gnu), Ubuntu 16.04.3 LTS.

Eu preciso obter um valor de DBUS_SESSION_BUS_ADDRESS e salvá-lo em um arquivo.

Se eu executar set | grep DBUS_SESSION_BUS_ADDRESS > /home/user/.DBUS_temp no Bash, tenho algo semelhante a DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-N1wmwpEVBj no arquivo .DBUS_temp , o qual está OK .

Mas quando tento executar o comando no script, acontece o seguinte:

  1. Um arquivo vazio é criado se set | grep DBUS_SESSION_BUS_ADDRESS > /home/user/.DBUS_temp for usado.
  2. BASH_EXECUTION_STRING='set | grep DBUS_SESSION_BUS_ADDRESS > /home/user/.DBUS_temp' está no arquivo se su -c 'set | grep DBUS_SESSION_BUS_ADDRESS > /home/user/.DBUS_temp' user for usado.

O que está errado no meu código / implementação?

Obrigado pelo seu tempo.

    
por pyramidka 22.11.2017 / 03:32

1 resposta

0

Eu postei esta resposta para minha própria pergunta para fechá-la.

Obrigado pela ajuda do muru e a resposta a esta pergunta Eu descobri como obter a variável DBUS_SESSION_BUS_ADDRESS na forma de DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-N1wmwpEVBj que é adequado para o meu propósito (usando este método nem precisa salvar a variável no arquivo):

PID=$(pgrep gnome-session)
export $(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ)

O uso do código da resposta mencionada acaba obtendo apenas unix:abstract=/tmp/dbus-N1wmwpEVBj da variável DBUS_SESSION_BUS_ADDRESS. Não funciona para mim.

    
por pyramidka 23.11.2017 / 01:56