Ok, encontrei uma solução para o meu problema inicial. Mas está sujo.
Antes de mais nada, use ~/.bash_profile
, ~/.bash_login
, ~/.profile
ou mesmo /etc/profile.d/
como métodos preferidos (aqui está uma boa leitura sobre o assunto) . Não sei porque não funciona para mim; talvez tenha algo a ver com a solução alternativa de logon automático do gerenciador de exibição, apenas um palpite.
Outra solução seria adicionar atalhos de script ao arquivo global executado na inicialização, por exemplo /etc/rc.local
.
Como meu script requer que o xserver e o usuário façam logon , criei o initfile que aguarda a inicialização do xserver e do usuário para efetuar logon e, em seguida, executa o script:
#! /bin/bash
### BEGIN INIT INFO
# Provides: script_file.sh startup at boot
# Required-Start: $all
# Required-Stop:
# X-Start-Before:
# Default-Start: 2 3 4 5
# Default-Stop:
# Description: runs '/usr/local/bin/script_file.sh --optional --flags' at startup, when xserver has started and YOURUSERNAME is logged on.
### END INIT INFO
case "$1" in
start)
# Wait until X is running and required user logged in:
count=0
until [[ "$(tty)" != "\/dev\/tty1" ]] && [[ "$(who | cut -d' ' -f1 | sort | uniq)" == "YOURUSERNAME" ]]; do
sleep 5
let count=$count+1
if [[ "$count" == "10" ]]; then
echo "Xserver hasn't started or other error occurred. Abort"; exit 1
fi
done
# Run the script as YOURUSERNAME instead of root:
su - YOURUSERNAME -c '/usr/local/bin/script_file.sh --optional --flags'
;;
stop)
:
;;
esac
exit 0
Essa eliminação de alma pressupõe a configuração automática do logon. Como mencionado, realmente não é a maneira de fazer isso, mas funciona por enquanto.