Executando o script no login mac

Eu estou querendo saber se alguém é capaz de me ajudar com a obtenção de um arquivo .sh para executar quando eu fizer login em minha conta no meu computador. Estou executando o Mac OS X 10.6.7.

Eu tenho um arquivo “Example.sh” que eu quero executar quando eu entrar no meu computador. Não tenho problema em executá-lo quando já estou logado, mas quero que isso seja executado automaticamente.

As pessoas estão dizendo para adicioná-lo ao arquivo shell de login, mas eu não sei onde é isso. Alguma ajuda por favor.

    Você pode:

    • inicie o Automator.app
    • Selecione “Aplicativo”
    • clique em “Mostrar biblioteca” na barra de ferramentas (se estiver oculto)
    • Adicionar “Run shell script” (das ações / utilitários)
    • Copie e cole seu script na janela
    • Teste-o
    • Salvar em algum lugar, por exemplo, você pode fazer uma pasta “Aplicativos” em sua casa (você receberá um your_name.app)

      Atualização : para o macOS mais recente, nomeie seu arquivo your_name.command vez de your_name.app

    • Vá para Preferências do Sistema -> Contas -> Itens de Login

    • Adicione este aplicativo
    • teste e feito;)

    EDITAR:

    Recentemente, ganhei um selo de “Boa resposta” para esta resposta. Embora minha solução seja simples e esteja funcionando, a maneira mais limpa de executar qualquer programa ou script de shell no momento do login é descrita na resposta do @trisweb , a menos que você deseje interatividade .

    Com a solução de automação, você pode fazer coisas como as seguintes: aplicativo de login de captura de tela de automação

    Por isso, pedindo para executar um script ou sair do aplicativo, perguntando senhas, executando outros streams de trabalho de automação no momento do login, execute condicionalmente os aplicativos no momento do login e assim por diante …

    tl: dr: utiliza o launcher e o gerenciador de processos nativos do OSX.

    Para fazer isso, crie um daemon launchctl . Você terá controle total sobre todos os aspectos do script. Você pode executar uma vez ou manter-se vivo como um daemon. Na maioria dos casos, este é o caminho a percorrer.

    1. Crie um arquivo .plist acordo com as instruções nos documentos da Apple Dev aqui ou com mais detalhes abaixo.
    2. Coloque em ~/Library/LaunchAgents
    3. Faça o login (ou execute manualmente via launchctl load [filename.plist] )

    Para mais informações sobre o launchd , o artigo da wikipedia é bastante bom e descreve o sistema e suas vantagens sobre outros sistemas mais antigos.


    Aqui está o arquivo plist específico para executar um script no login .

    Atualizado 2017/09/25 para OSX El Capitan e mais recente (crédito para José Messias Jr ):

     < ?xml version="1.0" encoding="UTF-8"?> < !DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">   Label com.user.loginscript ProgramArguments /path/to/executable/script.sh RunAtLoad    

    Substitua o após a chave do programa com o comando desejado.

    Salvar como ~/Library/LaunchAgents/com.user.loginscript.plist

    Execute launchctl load ~/Library/LaunchAgents/com.user.loginscript.plist e efetue logout / in para testar (ou para testar diretamente, execute launchctl start com.user.loginscript )

    Tail /var/log/system.log para mensagens de erro.

    A chave é que essa é uma input launchd específica do usuário, portanto, ela será executada no login do usuário especificado. Os daemons de lançamento específicos do sistema (colocados em /Library/LaunchDaemons ) são executados na boot.

    Se você quiser que um script seja executado no login para todos os usuários, acredito que o LoginHook é sua única opção, e essa é provavelmente a razão pela qual ele existe.

    1. Crie seu script de shell como login.sh na sua pasta $ HOME.

    2. Cole o seguinte script de uma linha no Editor de scripts:

      do shell script “$ HOME / login.sh”

    3. Em seguida, salve-o como um aplicativo.

    4. Por fim, adicione o aplicativo aos seus itens de login.

    Se você quiser tornar o resultado do script visual, você pode trocar a etapa 2 por isso:

     tell application "Terminal" activate do script "$HOME/login.sh" end tell 

    Se vários comandos forem necessários, algo como isto pode ser usado:

     tell application "Terminal" activate do script "cd $HOME" do script "./login.sh" in window 1 end tell