A maioria dos métodos de login lê variáveis de ambiente de /etc/profile
. (Pode haver outras possibilidades, mas esta é a mais fácil de agir.) Então, se eu entendi corretamente, você gostaria de adicionar uma atribuição de variável de ambiente para /etc/profile
na próxima reinicialização, e removê-lo na reinicialização depois disso .
Primeiro, se você ainda não tiver feito isso (crie uma distribuição), crie um diretório chamado /etc/profile.d
e adicione esse snippet a /etc/profile
:
for x in /etc/profile.d/*.sh; do
. "$x"
done
unset x
Crie um arquivo contendo export linux_test_run=yes
chamado /etc/profile.d/test_run.sh.0
.
Adicione o snippet a seguir a /etc/rc.local
(ou algum outro script executado no momento da inicialização):
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
Se você quiser reativar a configuração de uma reinicialização, renomeie-a para *.sh.0
.