Как я могу изменить переменную среды XSession после входа в систему?

По сути, мне нужно изменить переменную окружения во время моей 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 в сессию.

/etc/profile поставляется в /usr/share/sddm/scripts/Xsession

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

0 ответов

Другие вопросы по тегам