Как я могу изменить переменную среды XSession после входа в систему? - PullRequest
0 голосов
/ 22 февраля 2019

В основном мне нужно изменить переменную окружения во время моего xsession , чтобы каждый эмулятор терминала наследовал эту новую переменную при запуске терминала.

Это возможно в оболочке входа в bash.У меня есть файл, содержащий объявления среды, который получен при изменении файла через inotifywait, так что каждая новая оболочка будет наследовать экспортированные объявления.Мой /etc/profile.d/00-notifier.sh содержит следующее:

export ENV_FILE=~/notify_env
trap 'source $ENV_FILE' USR1
trap 'echo' INT

function autoReload () {

  ENV_FILE=~/notify_env

  inotifywait -m -r -q -e modify \
    --format "%w" "$ENV_FILE" \
  | while read env; do
    kill -USR1 $$ && kill -INT $$
  done
}

( autoReload ) &

И ~/notify_env просто содержит

export TESTVAR=$(( $TESTVAR+1 ))

Я проверяю его с помощью echo "export NEWVAR=new" >$ENV_FILE && sleep 1 && echo $TESTVAR

Но это не сработает, если я войду через, например, sddm , что в основном делает xinit /usr/local/bin/startkde в xsession.

Источник /etc/profile получен в /usr/share/sddm/scripts/Xsession

Я тоже думал об использовании xprop set, но думаю, что он не должен делать то, что мне нужно.

...