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