É possível executar um arquivo bash na inicialização antes do login do agente de inicialização plist?

2

Meu script só é executado após o login no usuário FooUser . Eu gostaria de bash arquivo para executar antes de login. Não sei por que ele só é executado após o login do usuário.

O plist e o caminho para boot-script.plist :

/Library/LaunchAgents/boot-script.plist

<?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">
<plist version="1.0">
<dict>
<key>Label</key>
<string>boot-script</string>

<key>ProgramArguments</key>
<array>
  <string>/usr/local/bin/boot.sh</string>
</array>

<key>RunAtLoad</key>
<true/>

</dict>
</plist>

O script bash e o caminho para boot.sh :

/usr/local/bin/boot.sh

#!/bin/bash

function startup(){

    cd /Users/FooUser/Desktop
    touch FooFile
}

startup;

Eu acredito que esta é a configuração adequada para processos de inicialização, tendo o plist armazenado no LaunchAgents

  • launchctl load -w boot-script.plist

  • boot-script.plist o proprietário é raiz e o grupo é roda

  • boot.sh permissão definida como executável

por localplutonium 22.06.2018 / 01:20

1 resposta

1

Você não pode executar um script antes de login, mas pode chamá-lo como parte do processo de login.

O local habitual para fazer isso é em ~/.bashrc : você precisará ver o que já está nele e decidir o local apropriado na sequência de login.

Você também precisará decidir se deseja chamá-lo em um subshell, que executará o touch , mas deixará o shell de chamada inalterado:

boot.sh

ou se deve chamá-lo no próprio shell de login, que definirá o diretório atual como /Users/FooUser/Desktop e disponibilizará a função startup após o login:

. boot.sh
    
por 22.06.2018 / 01:40

Tags