Gostaria de saber se alguém pode me ajudar a obter um arquivo .sh para executar quando eu fizer login na minha conta no meu computador. Estou executando o Mac OS X 10.6.7.
Eu tenho um arquivo "Example.sh" que desejo executar quando fizer logon no meu computador. Não tenho problemas ao executá-lo quando já estou logado, mas quero que ele seja executado automaticamente.
As pessoas estão dizendo para adicioná-lo ao arquivo de shell de logon, mas não sei onde é. Alguma ajuda por favor.
Respostas:
Siga isso:
Automator.app
Application
Show library
na barra de ferramentas (se oculta)Run shell script
(doActions/Utilities
)salve em algum lugar (por exemplo, você pode criar uma
Applications
pasta em sua HOME, receberá umayour_name.app
)vá para
System Preferences
->Accounts
->Login items
EDITAR:
Recentemente, recebi o selo "Boa resposta" por esta resposta. Embora minha solução seja simples e funcional, a maneira mais limpa de executar qualquer programa ou script de shell no momento do login é descrita na resposta da @ trisweb , menos que você queira interatividade .
Com a solução de automação, você pode fazer o seguinte:
portanto, pedindo para executar um script ou sair do aplicativo, solicitando senhas, executando outros fluxos de trabalho de automação no momento do login, execute condicionalmente aplicativos no momento do login e assim por diante ...
fonte
dr: use o iniciador e gerenciador de processos nativo do OSX
launchd
,.Para fazer isso, faça um
launchctl
daemon. 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..plist
arquivo de acordo com as instruções nos documentos do Apple Dev aqui ou com mais detalhes abaixo.~/Library/LaunchAgents
launchctl load [filename.plist]
)Para mais informações
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 .
Substitua a
<string>
chave depois do programa pelo comando desejado (observe que qualquer script referenciado por esse comando deve ser executável:chmod a+x /path/to/executable/script.sh
para garantir que seja para todos os usuários).Salvar como
~/Library/LaunchAgents/com.user.loginscript.plist
Execute
launchctl load ~/Library/LaunchAgents/com.user.loginscript.plist
e efetue logout / logon para testar (ou testar diretamente, executarlaunchctl start com.user.loginscript
)Cauda
/var/log/system.log
para mensagens de erro.A chave é que essa é uma entrada launchd específica do usuário, portanto ela será executada no login do usuário especificado. Daemons de inicialização específicos do sistema (colocados em
/Library/LaunchDaemons
) são executados na inicialização.Se você deseja que um script seja executado no login para todos os usuários, acredito que o LoginHook é sua única opção, e provavelmente é por isso que existe.
fonte
launchctl
é simplesmente muito melhor na maioria dos casos e oferece mais controle sobre todos os aspectos possíveis da execução do script. É mais no sentido de "por que usar um método menos capaz quando o launchd existe?" (Observe que alterei a primeira frase para indicar que eu pessoalmente não as recomendo para esta situação).Crie seu script de shell como
login.sh
na sua pasta $ HOME.Cole o seguinte script de uma linha no Editor de scripts:
do shell script "$ HOME / login.sh"
Em seguida, salve-o como um aplicativo.
Por fim, adicione o aplicativo aos seus itens de login.
Se você deseja tornar visual o resultado do script, é possível trocar a etapa 2 por isso:
Se vários comandos forem necessários, algo como isto pode ser usado:
fonte
Go to System Preferences -> Accounts -> Login items
e marque a caixa de ocultar para este aplicativo.~/Library/LaunchAgents
pasta?