Как я могу изменить переменную среды 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
, но я думаю, что это не должно делать то, что мне нужно.