LINUX.ORG.RU

bash, скрипт

 ,


0

2

у меня есть скрипт, который меняет тему в оболочке. Проблема заключается в urxvt, или в команде xrdb -merge $HD/.Xdefaults. её приходиться выполнять дважды. чтобы тема применялась. «Пытался» использовать ; чтобы команды выполнялись только после выполнения предыдущей. но не работает. Подскажите, пожалуйста, что я делаю не так.

#!/bin/sh
DS="/data/document/Скрипты/night_day"
HD="/home/skao"
RD="/root"
hour=$(date +%H)
if [ $hour -ge 9 -a $hour -lt 18 ]
then temp="day"
    perl -p -i -e 's/pro-dark/pro-light/g' $HD/.config/awesome/rc.lua
else
    temp="night"
    perl -p -i -e 's/pro-light/pro-dark/g' $HD/.config/awesome/rc.lua
fi
    cp $DS/termite.$temp $HD/.config/termite/config ;
    cp $DS/gtk02.$temp $HD/.gtkrc-2.0 ;
    cp $DS/gtk03.$temp $HD/.config/gtk-3.0/settings.ini ;
    cp $DS/Xdefaults.$temp $HD/.Xdefaults ;
    xrdb -merge $HD/.Xdefaults ;
    chown skao:skao $HD/.vimrc $HD/.gtkrc-2.0 $HD/.config/gtk-3.0/settings.ini $HD/.config/termite/config $HD/.Xdefaults



Последнее исправление: SmilePlz (всего исправлений: 1)

От кого запускается этот скрипт? Если в нём есть команда chown, наверное, от root'а, а переменная DISPLAY и XAUTHORITY установлены?

mky ★★★★★
()

не нужно, всё что касается пользовательских интерфейсов — тлен. оно приходит и уходит.

Spoofing ★★★★★
()
Ответ на: комментарий от mky

понятно, либо нужно переменную XAUTHORITY переписать для пользователя skao, либо скрипт выполнять от пользователя. спасибо большое

SmilePlz
() автор топика
Ответ на: комментарий от mky

Я сделал запуск cron от пользователя и переписал немного скрипт получилось:

#!/bin/sh

DS="/data/document/Scripts/night_day"
HD="/home/skao"

hour=$(date +%H)
if [ $hour -ge 9 -a $hour -lt 18 ]
then temp="day"
    perl -p -i -e 's/pro-dark/pro-light/g' $HD/.config/awesome/rc.lua
else
    temp="night"
    perl -p -i -e 's/pro-light/pro-dark/g' $HD/.config/awesome/rc.lua
fi
    cp $DS/termite.$temp $HD/.config/termite/config ;
    cp $DS/gtk02.$temp $HD/.gtkrc-2.0 ;
    cp $DS/gtk03.$temp $HD/.config/gtk-3.0/settings.ini ;
    cp $DS/Xdefaults.$temp $HD/.Xdefaults ;
    xrdb -merge $HD/.Xdefaults
но все равно не работает, но если я запускаю его в ручную, то все в порядке.
echo $DISPLAY 
:0.0
echo $XAUTHORITY 
/home/skao/.Xauthority

SmilePlz
() автор топика
Ответ на: комментарий от SmilePlz

запуск cron от пользователя

Это как? В смысле запуск из пользовательского crontab? Там не должно быть нужный переменных окружения. Их нужно прописывать в скрипте. Или у вас после запуска X'ов пользователь запускает демон crond?

mky ★★★★★
()
Ответ на: комментарий от mky

после X'ов. там по времени 2 раза в день.

SmilePlz
() автор топика
Ответ на: комментарий от SmilePlz

″crontab -e″ редактирует crontab пользователя, который не в /etc/crontab, а, ЕМНИП, в /var/spool/cron. Но crond ничего не знает об X-сессии пользователя. Переменные среды $DISPLAY и $XAUTHORITY нужно устанавливать прямо в скрипте.

mky ★★★★★
()
Ответ на: комментарий от mky

честно через скрипт не осилил установку переменных окружения. env DISPLAY=чтототам устанавливает переменную окружения для той программы которая будет использовать этот скрипт? export DISPLAY=чтототам для всей системы? В скрипте crontab там в верху написано Global variables(большими буквами, наверное для меня) с помощью их установил переменные окружения для cron'a. спасибо еще раз.

SmilePlz
() автор топика

вызывает из sh perl как утилиту

facepalm

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.