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 lo ejecuto.
¿Cómo lo escondo completamente?
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 lo ejecuto.
¿Cómo lo escondo completamente?
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 se debe ejecutar 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 intérprete (como #!/usr/bin/env bash
).
También puede reemplazar la clave Program
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 enlace para obtener más información.
Funcionó muy bien para resolver la pesadilla siempre detectable del bluetooth de los Mavericks utilizando 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
Lea otras preguntas en las etiquetas bash mavericks iterm login-items script