2

Мой скрипт запускается только после входа в систему пользователя FooUser . Я хотел бы bash файл для запуска до входа в систему. Я не уверен, почему он запускается только после входа пользователя.

Plist и путь для 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>

Скрипт bash и путь для boot.sh:

/usr/local/bin/boot.sh

#!/bin/bash

function startup(){

    cd /Users/FooUser/Desktop
    touch FooFile
}

startup;

Я считаю, что это правильная настройка для процессов запуска, хранящая plist в LaunchAgents

  • launchctl load -w boot-script.plist

  • владелец boot-script.plist - root, а группа - wheel

  • разрешение boot.sh установлено на исполняемый файл

1 ответ1

1

Вы не можете запустить скрипт перед входом в систему, но вы можете вызвать его как часть процесса входа в систему.

Обычно это делается в ~/.bashrc: вам нужно посмотреть, что в нем уже есть, и выбрать подходящее место в последовательности входа в систему.

Вам также необходимо решить, хотите ли вы вызывать его в подоболочке, которая выполнит touch но оставит вызывающую оболочку без изменений:

boot.sh

или вызвать его в самой оболочке входа в систему, которая установит текущий каталог в /Users/FooUser/Desktop и сделает функцию startup доступной после входа в систему:

. boot.sh

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .