Настольная среда KDE имеет собственную поддержку этого. Проверьте Kubuntu, который в основном является Ubuntu с помощью KDE.
Вот то, как Вы делаете это:
Ну, файлы в /tmp
обычно чистятся на перезагрузке, итак, почему бы не, некоторый сценарий получает файл там, что-то вроде, "если этот файл существует, получите его"? Затем можно сделать инициализацию в том файле по мере необходимости. Это могло быть помещено в некоторый файл инициализации удара, который получен входом в систему в оболочках как /etc/profile
. (Это предполагает, что Вы хотите, чтобы это было получено интерактивными оболочками, а не оболочками входа в систему.)
Однако я действительно не соглашаюсь с контекстом. Если Вы могли бы предоставить больше подробную информацию о том, что Вы пытаетесь сделать, Вы получили бы лучшие ответы.
Можно использовать export
отметить переменную, которая будет передана дочерним процессам в среде.
export linux_test_run=yes
Если Вы захотите, чтобы переменная была доступна недавно подключенным пользователям, то необходимо будет отредактировать файлы инициализации оболочки.
Извините, необходимо будет отредактировать файл запуска где-нибудь, и если Вы хотите его для всех пользователей, вероятно, bashrc
в /etc
.
Однако, если единственная причина, что Вы не хотите использовать файлы, состоит в том, что Вы хотите это поведение исчезнуть на перезагрузке, существуют другие способы сделать это:
setvariable.bash
из bashrc
. В том файле Вы экспортируете свою переменную/etc/init.d
это запустится на перезагрузке и деактивируется setvariable.bash
файл (заменяющий его пустым файлом или чем-то)Это - взлом, но это могло бы работать.
bashrc
конфигурационный файл удара, это не место для переменных среды. /etc/profile
наиболее распространенное место для переменных среды; большинство систем имеет другие возможности такой как /etc/environment
.
– Gilles 'SO- stop being evil'
05.04.2011, 23:06
Большинство методов входа в систему читает переменные среды из /etc/profile
. (Могут быть другие возможности, но это является самым легким действовать на.) Поэтому, если бы я понимаю Вас правильно, требуется добавить присвоение переменной среды на /etc/profile
на следующей перезагрузке, и удаляют его на перезагрузке после этого.
Во-первых, если у Вас уже нет этого (некоторый дистрибутивный набор это), создайте названный каталог /etc/profile.d
и добавьте этот отрывок к /etc/profile
:
for x in /etc/profile.d/*.sh; do
. "$x"
done
unset x
Создайте файл, содержащий export linux_test_run=yes
названный /etc/profile.d/test_run.sh.0
.
Добавьте следующий отрывок к /etc/rc.local
(или некоторый другой сценарий это выполняется во время начальной загрузки):
for x in /etc/profile.d/*.sh.[0-9]*; do
n=${x##*.} # extract the part after the last .
case n in
*[!0-9]*) continue;; # n is not a number, so skip this file
*[1-9]*) mv "$x" "${x%.*}.$(($n-1))";; # decrement the number in the file name
*) # the file is *.sh.0, so rename to .sh and schedule for deletion
echo "${x%.*}" >>/etc/profile.d/cancel-on-reboot.list
mv "$x" "${x%.*}";;
esac
done
if [ -e /etc/profile.d/cancel-on-reboot.list ]; then
# rename all files in this list so they won't be considered any longer
while read -r x; do
mv "$x" "$x.cancelled"
done </etc/profile.d/cancel-on-reboot.list
rm /etc/profile.d/cancel-on-reboot.list
fi
Если требуется повторно включить установку для одной перезагрузки, переименуйте ее к *.sh.0
.