Como escrever um script de shell que é executado no login?


16

Estou tentando escrever o script bash shell na distribuição Linux Ubuntu 11.10, que será executada automaticamente ao fazer login no sistema. Mas não consigo descobrir o que escrever em um script que por ele será executado automaticamente ao fazer login.

Respostas:


18

Se você deseja que seja global, modifique

 /etc/profile 

ou adicione um script a

 /etc/profile.d

Se você quiser que seja específico do usuário, modifique

 /home/$USER/.profile

1
Não esqueça que a extensão deve ser .shse você colocar seu script dentro de /etc/profile.d/. chmode +x /etc/profile.d/myscript.shclaro também.
27417 Brian Haak

Estiramento Raspbian. Tentando executar o /usr/local/bin/pihole -ccomando no logon automático de usuário específico. Adicionada esta linha a /home/$USER/.profile- nada acontece. Quando adiciono script /etc/profile.d, ele funciona, mas é global e o executa mesmo quando abro a sessão ssh (que não é o que eu quero). Adicionando ao .bashrcfunciona também, mas é executado sempre que eu abro um novo shell (que não é o que eu quero). Pergunta: Por que adicionar a /home/$USER/.profilenão funcionaria ???
Desenhou

3

Basta adicionar o script bash aos aplicativos de inicialização.

No campo de comando, insira

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

2
Como você adiciona "bash /.../script.sh" aos aplicativos de inicialização na linha de comando?
aleb

1
O OP nunca mencionou uma GUI; e se eles estiverem em um servidor remoto via SSH e não tiverem uma GUI? Nenhuma das marcas de desktop foram aplicados para a questão ...
Doktor J

O título menciona especificamente no login e nada sobre as GUIs da área de trabalho.
precisa saber é o seguinte

0

Se você quiser ser mais específico do bash, também pode escrever seu código em ~ / .bash_profile ou ~ / .bash_login.

E você pode fonte qualquer script nele, por exemplo:

if [ -f ~/.bashrc ]; then
   source ~/.bashrc
fi

0

/etc/profileou $HOME/.profileou$HOME/.bash_profile

Eu recomendo não usar /etc/profile.d/yourscript.shse produz saída. Ao usar uma sessão não interativa, você receberá uma $TERM is not setmensagem. Isso é perceptível ao usar o protocolo ssh, como scp. Normalmente, não é grande coisa, no entanto, a Veeam não gosta e lança um aviso. Eu sei que a Veeam não é o tópico aqui, mas vale a pena mencionar que nem todos os aplicativos ignoram o $TERM is not setaviso normalmente .

Em resumo, se o script gerar saída, coloque-o nos locais especificados na primeira linha. No entanto, se você estiver modificando o ambiente e seu script não gerar saída, use o último.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.