Estoy usando el Aplicación de paquetes para crear un instalador que incluya, entre otras cosas, un trabajo launchd.
El Bash post-instalación script necesita dirigirse al usuario conectado como sigue:
launchctl bootstrap gui/$UID ~/Library/LaunchAgents/com.mycompany.myproduct.plist
El problema es que $UID devuelve 0 cuando se ejecuta desde el paquete.
El siguiente ajuste funciona como se espera en mi máquina, pero los usuarios del despliegue de destino no utilizan cuentas 501 sino móviles, por lo que el UID difiere con cada cuenta AD
launchctl bootstrap gui/501 ~/Library/LaunchAgents/com.mycompany.myproduct.plist
He probado todo tipo de cosas:
$SUDO_USER
$LOGNAME
$(who -m | awk '{print $1;})
$(logname 2>/dev/null || $SUDO_NAME)
Todos devuelven el usuario 0/Root.
Este parece funcionar, en mi máquina, cuando se ejecuta Terminal después de sudo su. Pero, como no entiendo la parte de /dev/console (o el parámetro %Su), ¿es 100% fiable?
id -P $(stat -f%Su /dev/console) | cut -d : -f 3