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?
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 Program
clave 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.plist
o http://osxnotes.net/launchd.html para obtener más información.
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
fischer