Я использую PackageMaker для создания установщика для своего приложения. Во время установки мне нужно запустить сценарий bash, чтобы правильно установить rxtx, библиотеку JNI для связи через последовательный порт. Эта библиотека должна иметь каталог /var/lock с пользователем «root» и группой «uucp». Сценарий установки также должен добавить текущего пользователя в группу «uucp», чтобы библиотека могла писать в /var/lock.
Теперь, когда я запускаю установщик приложения, сценарий предварительной установки запускается от имени пользователя root. Поэтому «whoami» возвращает root, а не пользователя, который на самом деле запускает установщик. В результате rxtx не может создавать файлы блокировки в /var/lock, потому что фактический пользователь не был добавлен в качестве участника "uucp".
Как я могу получить пользователя, пока мой скрипт запускается установщиком. Или, возможно, лучше установить разрешения для /var/lock для другой группы? Любые предложения приветствуются!
#!/bin/sh curruser=`whoami` logger "Setting permissions for /var/lock for user $curruser!" if [ ! -d /var/lock ] then logger "Creating /var/lock!" sudo mkdir /var/lock fi sudo chgrp uucp /var/lock sudo chmod 775 /var/lock # MacOSX 10.5 and later use dscl if [ `sudo dscl . -read /Groups/uucp GroupMembership | grep $curruser | wc -l` = "0" ] then logger "Add user $curruser to /Groups/uucp!" sudo dscl . -append /Groups/uucp GroupMembership $curruser # to revert use: # sudo dscl . -delete /Groups/uucp GroupMembership $curruser else logger "User already member of group uucp!" fi