Maneira permanente de executar um comando para root na inicialização do sistema no Mac OS

1

No Mac OS, o agente de compilação do meu servidor de CI é executado como root. Eu tenho mexido com a versão ruby por defaul ruby -v relatórios versão 2.0, enquanto depois que eval "$(rbenv init -)" está sendo executado, eu recebo um desejado 2,4.

Se eu fosse definir o eval "$(rbenv init -)" para executar cada vez que eu fizesse login no shell, apenas o adicionaria ao meu ~ / .bash_profile.

Mas presumo que os comandos do bash_profile sejam executados quando na verdade ssh como usuário. Como posso ter certeza de que o comando ruby corrector seja executado com o início do sistema para o root?

    
por Maxim V. Pavlov 09.03.2017 / 18:59

2 respostas

0

Você pode usar um trabalho cron que executará um processo uma vez em reboot .

A entrada do crontab do

root seria algo como isto:

@reboot       $HOME/bin/startup.sh

Use crontab -e para adicionar a entrada. Você adicionaria seus comandos ruby ao seu arquivo startup.sh .

Execute man 5 crontab para mais detalhes e opções.

    
por 09.03.2017 / 19:02
0

Eu não uso o rbenv, mas meu entendimento é que o passo init modifica o ambiente do shell atual para permitir que o rbenv controle os comandos do ruby (por exemplo, adicionando o diretório shims do rbenv ao PATH variável de ambiente Cada processo tem seu próprio ambiente, portanto, executar rbenv init durante a inicialização do sistema afetaria apenas o processo em que ele foi executado , não o sistema inteiro.

O que você precisa fazer é executar eval "$(rbenv init -)" para cada novo shell que você deseja gerenciar pelo rbenv. Se você quiser que as tarefas executadas por seu servidor de CI nos usem rbenv, isso significa que você precisa adicioná-las a qualquer processo de inicialização que essas tarefas utilizem. Meu palpite seria que adicionando eval "$(rbenv init -)" ao ~ / .bash_profile e / ou ~ / bashrc da conta root, mas sem saber exatamente como o servidor funciona, eu não posso dizer com certeza.

    
por 11.03.2017 / 04:00