O problema é que service
retira todas as variáveis de ambiente, mas TERM
, PATH
e LANG
, o que é bom. Se você estiver executando o script diretamente, nada removerá as variáveis de ambiente para que tudo funcione.
Você não quer depender de variáveis de ambiente externas, porque na inicialização a variável de ambiente provavelmente não está presente e seu sistema de inicialização provavelmente não irá configurá-lo de qualquer maneira.
Se você ainda quiser confiar em tais variáveis, crie um arquivo e leia as variáveis dele, por exemplo. crie /etc/default/servicename
com o conteúdo:
VAR=value
e fonte de seu script de inicialização, por exemplo:
[ -f /etc/default/service-name ] && . /etc/default/service-name
if [ -z "$VAR" ] ; then
echo "VAR is not set, please set it in /etc/default/service-name" >&2
exit 1
fi
case "$1" in
status)
cd "$VAR"/dir
;;
esac