У меня есть сценарий, который работал в прошлом, но, похоже, сейчас возникают проблемы (я думаю, это из-за Йосемити). Я создал переменную окружения, для которой было установлено значение «false», а затем мой сценарий установил для нее значение «true», чтобы, если сценарий занимал слишком много времени и запускался снова до его завершения, он не пытался запускаться снова одновременно. Тем не менее, это больше не работает.
Я установил переменную изначально с помощью /etc/launchd.conf
setenv autoBackupImagesInProgress false
И часть моего сценария, которая больше не работает,
#Ensure that this script isn't already running
if [ -z "$autoBackupImagesInProgress" ] ; then
#Concurrency variable was not setup so this will not work;
#edit .bashrc or .profile to include export autoBackupImagesInProgress=false
#should be /etc/launchd.conf
print "WARNING: Concurrency protection unavailable"
elif [ $autoBackupImagesInProgress = true ] ; then
#Another process has already started this, but has not yet finished
print "WARNING: Already in progress; aborting."
exit 0;
fi
Это работает, если я запускаю скрипт из терминала или Spotlight, но не тогда, когда это запускается с launchd. При запуске из launchd это всегда будет печатать первое предупреждение и никогда не попадет в elif.
Ответы:
Откройте редактор сценариев (Панель запуска -> Другое -> Редактор сценариев). Введите сценарии следующим образом:
Используйте несколько строк, если вы хотите установить несколько переменных.
Сохраните этот сценарий как Приложение, откройте SystemPreferences → Пользователи и группы → Ваш пользователь → Элементы входа и добавьте сохраненный сценарий.
Чтобы применить изменения, выйдите из своей учетной записи и войдите снова.
источник