Como posso fazer um programa iniciar automaticamente no OSX?
-
03-07-2019 - |
Pergunta
Tenho um pequeno programa que quero abrir automaticamente quando meu Mac é iniciado.
Como este programa aceita argumentos da linha de comando, não é tão simples como apenas ir ao sistema Prefs/Contas/Login itens e adicioná -lo lá ...
No Google, li que posso criar um arquivo .Profile na pasta doméstico do meu usuário, e isso executará o que eu colocar nele ... então eu tenho uma página .Profile em ~ como este:
-rw-r--r-@ 1 Matt Staff 27 27 de setembro 13:36 .Profile
Que contém isso ...
/Applications/MouseFix 3.5
Mas não é executado na startup! Se eu entrar manualmente "/Applications/MouseFix 3.5" no terminal, ele funcionará.
Alguma ideia?
Solução
Daqui e para o futuro, olhe para launchd
para o que você quer fazer. Todos os outros métodos foram preteridos ou agora não são suportados. Provavelmente, isso é um pouco mais pesado do que você deseja.
Também pode ser um problema com sua versão do shell bash não executando corretamente o seu .profile
. Tente colocar o comando em .bashrc
no seu diretório doméstico, e veja se isso ajuda.
Outras dicas
Você pode usar Lingon Para ajudar a construir um arquivo de plista para o Launchd.
A maneira mais geral de lançar coisas no startup no macOS está usando Launchd. Você pode criar um arquivo PLIST para dizer para iniciar seu programa no Startup, que pode incluir argumentos.
Você pode usar o AppleScript que pode executar comandos de terminais e depois o AppleScript lançado na inicialização.
o .profile
e .bash_profile
Entre em jogo apenas quando você abre um novo shell (por exemplo, abrindo o terminal ou entrando no SSH). Além disso, acredito se Bash detectar .bash_profile
Não vai procurar .profile
Se você quiser começar no login, eu olharia para as outras sugestões sobre o Launchd
Você sempre pode escrever um script de wrapper que o executa com os argumentos que deseja
Obrigado a todos. A solução Launchd é bem legal, sim, é pesado para uma coisa tão simples, mas é bom saber, e como desenvolvedor, estou feliz em mexer :)