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?
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 Program
Schlü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.plist
oder http://osxnotes.net/launchd.html für weitere Informationen.
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
cfischer