Puoi interrompere l'avvio dell'elemento con launchctl disable gui/$UID/bundle-id
.
Se non conosci l'ID del bundle, puoi trovarlo digitando launchctl list
. Questo elencherà i processi tutti in esecuzione sotto il tuo utente, con i loro PID nella prima colonna. Quindi, se hai visto questo:
$ launchctl list
- 0 com.apple.SafariHistoryServiceAgent
277 0 com.apple.Finder
- 0 com.apple.quicklook
- 0 com.apple.parentalcontrols.check
[…]
189 0 com.example.ExampleDaemon
- 0 com.apple.java.InstallOnDemand
... potresti utilizzare Activity Monitor per confermare che il PID dell'app indesiderato è 189, il che rende il suo ID bundle com.example.ExampleDaemon
. Poi:
launchctl disable gui/$UID/com.example.ExampleDaemon
Questo è tutto. Lì è ancora un record della voce di accesso su disco, semplicemente disabilitato. Se vuoi eliminarlo, o semplicemente vuoi saperne di più, continua a leggere.
Controintuitivamente (ma in modo divertente?), la lista è salvata qui:
/var/db/com.apple.xpc.launchd/disabled.$UID.plist
Quel file sarà simile a questo:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.example.ExampleDaemon</key>
<false/>
</dict>
</plist>
Sì, il false
indica che all'avvio verrà lanciata un'app con l'id del gruppo dovrebbe . Dopo aver eseguito launchctl disable
, false
cambierà in true
. (Per quanto ne so, launchd non scrive questi file subito, quindi potresti non vederlo fino al riavvio.) Puoi vedere gli elementi disabilitati con questo comando:
launchctl print-disabled gui/$UID
Ci sono anche alcune informazioni aggiuntive su ogni elemento di accesso memorizzato qui, ma rimuoverlo non impedirà l'avvio dell'elemento:
/var/db/com.apple.xpc.launchd/loginitems.$UID.plist
Qualsiasi modifica apportata mentre il sistema è in esecuzione verrà sovrascritta quando si spegne / si riavvia. Quindi, per quanto posso dire, l'unico modo per rimuovere completamente un elemento da disabled.$UID.plist
è riavviare in modalità utente singolo e apportare le modifiche lì. Anche senza aver eseguito launchctl disable
, la rimozione di una coppia key
/ false
da questo file impedisce l'avvio dell'applicazione al momento dell'accesso. Non includerò le istruzioni per modificare questi file in modalità utente singolo in questa risposta.