Como executar automaticamente um script de shell ao fazer login no Ubuntu

15

Como faço para que um script seja executado automaticamente quando faço login? Não quando a máquina é inicializada e não para todos os usuários, mas apenas quando eu (ou qualquer usuário específico com o script) efetuo login através da interface do usuário do GNOME.

De ler em outro lugar, pensei que estava .bash_profileno meu diretório pessoal, mas para mim não tem efeito. Quando eu o executo manualmente em uma janela de terminal, digitando ~/.bash_profileele funciona, mas ele não será executado automaticamente quando eu fizer login.

Estou executando o Ubuntu 11.04. A permissão de arquivo no meu .bash_profile é -rwx------. Nenhum .bash_profile existia no meu diretório pessoal antes de eu o criar hoje.

Parece que me lembro de versões anteriores do Linux com um .profilearquivo para cada usuário, mas isso também não funciona.

Como isso é feito? Preciso configurar outra coisa para que o .bash_profile funcione? Ou o script de login por usuário precisa estar em outro arquivo?

Mike Rowave
fonte
.bash_profile, .profile e .bashrc (que é realmente o usado pelo ubuntu) são carregados toda vez que você abre um terminal bash. Então, na verdade, não tenho certeza de que eles serão carregados se você fizer login no GDM.
Juan Sebastian Totero
A publicação da sua versão do Ubuntu pode ajudar. No Ubuntu 10.10 .bashrc "funciona para mim (TM)".
Vlueboy
Você quer dizer quando faz login na GUI ou no shell?
Flimzy
o bash os carrega quando você inicia um novo shell, portanto eles só serão carregados quando você abrir uma janela do terminal ou fizer login em um terminal virtual, não quando você fizer login no Gnome (GDM).
shiftycow
Estou usando o Ubuntu 11.04, como mencionei na pergunta original.
Mike Rowave

Respostas:

11

Você pode simplesmente adicionar o seguinte comando em Sistema> Preferências> Aplicativos de Inicialização:

bash /full/path/to/your/script.sh

Isso deve fazer o truque;)

Juan Sebastian Totero
fonte
Sabe, eu fiz isso antes e não funcionou ... exceto que não escrevi "bash" antes do caminho do script! Vou tentar com o bash mais tarde. Por curiosidade, quando você insere algo via GUI nos aplicativos de inicialização, em qual arquivo ele está registrado?
Mike Rowave
Programas de inicialização deve ser registrado em/etc/xdg/autostart
shiftycow
Adicionando bash /home/myusername/scriptname"Aplicativos de inicialização" funcionou! Obrigado. No entanto, isso pode ser específico para o GNOME no Ubuntu, é por isso que eu estava pensando sobre onde as entradas no item de menu "Aplicativos de Inicialização" são registradas, pois seria mais provável que seja semelhante em outras versões modernas do Linux.
Mike Rowave
2
/etc/xdg/autostartparece ser um arquivo de todo o sistema, não específico para um usuário.
Mike Rowave
Para versões posteriores do ubuntu, consulte askubuntu.com/questions/159887/…
TooTone
8

Então, basicamente, como sugeriu o nodiscc , crie um iniciador de área de trabalho: ~ / .config / autostart / script.desktop com o seguinte conteúdo:

[Desktop Entry]
Type=Application
Name=Autostart Script
Exec=autostart
Icon=system-run
X-GNOME-Autostart-enabled=true

Em seguida, crie o script de inicialização automática: ~ / bin / autostart com o seu conteúdo do bash:

#!/bin/bash
# Execute bash script below

Certifique-se de que ~ / bin / autostart seja executável

Bert Regelink
fonte
5

Você pode adicionar uma linha no crontab -

crontab -e

Em seguida, adicione esta linha ao arquivo que se abre:

@reboot /path/to/your/cool/script

Isso executará o script na reinicialização. Para mais detalhes, consulteman crontab

inLoveWithPython
fonte
Eu não sei porque, mas eu não pode executar .sh arquivos em "Start Up aplicações", portanto, o caminho easyest para fazê-lo agora, é cron
Albert Català
1

Tente ~/.xinitrc(algumas informações aqui: https://wiki.archlinux.org/index.php/Xinitrc ). Lembre-se de que qualquer coisa iniciada neste script deve ser iniciada / executada em segundo plano, ou pode interferir no login do X.

Slartibartfast
fonte
-1

Estendendo a resposta @JuanSebastianTotero .

Ao invés de:

bash /full/path/to/your/script.sh

Experimentar

sh /full/path/to/your/script.sh

bashnão funcionou para mim no Ubuntu 13.04e 14.04. Mas shfaz.

Rahil Wazir
fonte