Ho un plist nella cartella / Library / LaunchAgent (dovrebbe essere eseguito come "utente registrato", se ho capito bene ma sembra che sia in esecuzione come root ). Lancia uno script .sh bash.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.user.uloginscript</string>
<key>Program</key>
<string>/Library/TestArea/netcall.sh</string>
</dict>
</plist>
Lo script, per la risoluzione dei problemi, contiene le seguenti righe:
#!/bin/bash
curUser=$(id -u -n)
osascript -e 'tell app "Finder" to display dialog "'$curUser'"'
o
#!/bin/bash
curUser=$(USER)
osascript -e 'tell app "Finder" to display dialog "'$curUser'"'
Il risultato della finestra di messaggio è sempre:
root
Ciò significa che qualsiasi script che sto cercando di fare ha problemi. Qualcuno può far luce sul perché questo sta accadendo. Lo script viene eseguito su ogni accesso, viene eseguito prima che venga visualizzato il desktop dell'utente (il messaggio viene visualizzato nella schermata di accesso).
Stranamente, se uso il seguente codice:
#!/bin/bash
osascript -e 'tell app "Finder" to display dialog "'$1'"'
Restituisce il nome utente corretto. Sembra che lo script sia eseguito come root, ma ha passato il parametro dell'utente loggato (si noti che il plist non ha parametri).
Esecuzione di Mavericks 10.9.5