Script de inicio de sesión oculto

Tengo un script de shell bash que se ejecuta al iniciar sesión. Aunque seleccioné la casilla de verificación "ocultar" en las preferencias del sistema, iTerm aún se muestra mientras se ejecuta.

¿Cómo lo oculto por completo?

Respuestas (2)

Intente ejecutar el script con launchd en su lugar. Guarde una lista de propiedades como esta como ~/Library/LaunchAgents/some.label.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>some.label</string>
  <key>Program</key>
  <string>/path/to/script</string>
  <key>RunAtLoad</key>
  <true/>
</dict>
</plist>

La secuencia de comandos debe ejecutarse la próxima vez que inicie sesión. Asegúrese de que la secuencia de comandos sea ejecutable ( chmod +x /path/to/script) y comience con una línea de interpretación (como #!/usr/bin/env bash).

También puede reemplazar la Programclave con, por ejemplo

<key>ProgramArguments</key>
<array>
  <string>say</string>
  <string>a</string>
</array>

o

<key>ProgramArguments</key>
<array>
  <string>bash</string>
  <string>-c</string>
  <string>say a;ls|say</string>
</array>

Consulte man launchd.plisto http://osxnotes.net/launchd.html para obtener más información.

¿Qué es eso de la etiqueta?

Funcionó muy bien para resolver la pesadilla siempre detectable del bluetooth de los Mavericks usando el siguiente script:

#!/bin/sh

defaults -currentHost write com.apple.Bluetooth DiscoverableState -bool no

launchctl unload /System/Library/LaunchDaemons/com.apple.blued.plist 2> /dev/null

launchctl load /System/Library/LaunchDaemons/com.apple.blued.plist