Verstecktes Anmeldeskript

Ich habe ein Bash-Shell-Skript, das bei der Anmeldung ausgeführt wird. Obwohl ich das Kontrollkästchen „Ausblenden“ in den Systemeinstellungen aktiviert habe, wird iTerm weiterhin angezeigt, während es ausgeführt wird.

Wie verstecke ich es komplett?

Antworten (2)

Versuchen Sie stattdessen, das Skript mit launchd auszuführen. Speichern Sie eine Eigenschaftsliste wie diese als ~/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>

Das Skript sollte bei Ihrer nächsten Anmeldung ausgeführt werden. Stellen Sie sicher, dass das Skript ausführbar ist ( chmod +x /path/to/script) und mit einer Interpreter-Zeile (wie #!/usr/bin/env bash) beginnt.

Sie können den ProgramSchlüssel zum Beispiel auch durch ersetzen

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

oder

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

Siehe man launchd.plistoder http://osxnotes.net/launchd.html für weitere Informationen.

Was ist das Label-Ding?

Hat großartig funktioniert, um den immer erkennbaren Bluetooth-Albtraum von Mavericks mit dem folgenden Skript zu lösen:

#!/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