~/.profile , /.bash_profile e /.bash_login são melhores para definir as variáveis de ambiente e configurar o ambiente do que para executar scripts. Eu não recomendaria isso.
/etc/rc.local pode ser usado para isso, mas lembre-se de que ele será iniciado antes que a GUI seja iniciada. A menos que seja por um script que envia apenas notificação para a GUI. Observe que você precisará chamar seu script em /etc/rc.local no formato /full/path/to/script & ( & para evitar o bloqueio de outros scripts que você possa ter na execução). Você também precisará da variável export DISPLAY=:0 no próprio script ou no /etc/rc.local . Aplicativos que precisam de GUI precisarão dessa variável para existir. Mesma ideia com cron job using @reboot .
Se você quiser executar scripts no login da GUI, a maneira correta é criar o arquivo .desktop para cada script na sua pasta ~/.config/autostart/ . Você pode fazer isso manualmente ou usar o aplicativo Startup Applications que faz exatamente a mesma coisa para você. Basta abrir o Unity Dash e digitar "Startup Applications"
Visão geral dos seus exemplos
-
apt-get updatenão precisa de GUI, apenas de rede./etc/rc.localestá ok para este. -
set some permissions, isso não precisa de GUI, apenas use/etc/rc.local -
set display brightnessnão precisa de GUI também, mas pode precisar de privilégios de root. Se você quiser alterá-lo antes do login, será necessário gravar em um arquivo especial. Consulte meu outro post sobre esse assunto -
turn numlock onpode não precisar da GUI, também -
setup touchpaddependendo do seu método, pode ou não precisar de GUI -
run some appsse forem aplicativos de interface gráfica, eles precisarão ser iniciados a partir dos aplicativos de inicialização descritos acima. -
run some scripts as rootvocê pode usar/etc/rc.localoucronpara estes. Rodar aplicações GUI como root é uma má ideia por muitas razões, por isso evite isso. -
run some scripts without rootusa o método Startup Applications.