A fissão é bem visível.
Há alguns detalhes adicionais sobre como adicionar itens de login do bash na seguinte postagem do stackoverflow:
Eu preciso de uma maneira de adicionar um aplicativo aos itens de login a partir de um script de postflight que é executado como parte do meu instalador. Precisa funcionar em 10.5+. De preferência, funcionaria em um script bash. Meu aplicativo já requer direitos administrativos.
A abordagem que encontrei aqui: link parecia estar à direita faixa (incluído abaixo) ... mas não funcionou quando eu tentei na linha de comando e eu não tenho certeza de como fazê-lo instalar para todos os usuários ou se eu precisar adicionar lógica para verificar se ele já está adicionado aos itens de inicialização antes de chamar este código.
#!/bin/bash
/usr/bin/osascript -e "tell application \"System Events\" to make new login item with properties { path: \"$1\", hidden:false } at end"
Eu suspeito que eu também poderia fazer algo com um launchd. Mas não tenho certeza de qual abordagem é a melhor prática para compatibilidade entre versões.
A fissão é bem visível.
Há alguns detalhes adicionais sobre como adicionar itens de login do bash na seguinte postagem do stackoverflow:
Se você não se importar com um pouco de leitura, sugiro começar com Apple Nota Técnica TN2083: Daemons e Agentes .
Eu não testei, mas acredito que a maneira mais fácil de fazer o que você quer é através de um launchd
agent . Isso envolve essencialmente a remoção de um arquivo plist
em /Library/LaunchAgents
. Um bom benefício disso é que você pode sobrescrever o mesmo arquivo quantas vezes desejar, e você não deve obter múltiplas instâncias do seu item (por usuário).
Algo como:
#!/bin/sh
cat > /Library/LaunchAgents/com.serverfault.myapp.plist << EOT
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.serverfault.myapp</string>
<key>ProgramArguments</key>
<array>
<string>/Library/MyApp/myapp.app/Contents/MacOS/myapp</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
EOT
A outra possibilidade é um item de login global . A partir dessa nota técnica mencionada acima, eu recolhi:
System Events
processo. [Então talvez isso não funcione mais confiavelmente a partir de 10.5?] Acredito que muitos aplicativos (antes de launchd
em 10.5) costumavam manipular diretamente o arquivo loginwindow.plist
. Infelizmente, muitos deles fizeram isso incorretamente - não posso dizer quantos arquivos loginwindow.plist
do meio-XML-meio-binário-todo-quebrado que vi.
Tags bash remote-desktop mac-osx