macos - Recargar com.apple.Terminal.plist
reload defaults (4)
Quiero usar un script para modificar las preferencias de mi terminal para mi Mac, por lo que puede cerrar la ventana cuando salga de la terminal. Yo uso este comando en el script:
/usr/libexec/PlistBuddy -c "Set /"Window Settings/":Basic:shellExitAction 0" ~/Library/Preferences/com.apple.Terminal.plist
Ahora el problema es después de ejecutar el script, el archivo .plist se cambia, lo controlo por
defaults read com.apple.Terminal "Window Settings"
El valor es 0 ahora.
Pero el problema es que el terminal no vuelve a cargar el archivo .plist, y cuando salgo del terminal, vuelve a escribir el archivo .plist como ''2''. Así que mi pregunta es cómo dejar que el terminal vuelva a cargar el archivo .plist cuando se está ejecutando o detener la reescritura del archivo cuando salga.
Mi solución adaptada se ejecuta en OS X Mavericks (también).
En el ejemplo, agrego un nuevo PermanentServer para una conexión ssh en Terminal -p 22 www.example.com -l user -L 33306:localhost:3306
- Cierre la aplicación Terminal
Abra el archivo plist en Xcode y edite la configuración PermanentServer (copie y pegue la cadena de arriba)
open ~/Library/Preferences/com.apple.Terminal.plist
- Guarde y cierre el archivo plist
Abra Applescript-App y copie / pegue / ejecute el siguiente código:
do shell script "defaults read ~/Library/Preferences/com.apple.Terminal.plist"
Abra Terminal-App y presione MAYÚS + CMD + K y busca en la lista de servidores
Gracias por esta sugerencia aquí: http://www.cnet.com/how-to/how-to-manually-edit-defaults-plist-files-in-mavericks/
En 10.9 (Mavericks), las preferencias están en la memoria caché. Después de sobrescribir sus preferencias desde la Terminal, debe leerlas con
defaults read com.apple.Terminal
y luego salir y reiniciar el terminal.
Tengo mis preferencias de Terminal en mi servidor, por lo que el comando completo que uso en una nueva máquina o en un nuevo perfil es:
curl -o ~/Library/Preferences/com.apple.Terminal.plist http://example.com/xyz/com.apple.Terminal.plist.`sw_vers /
| grep ''ProductVersion:'' /
| grep -o ''10/.[0-9]*''` /
&& defaults read com.apple.Terminal
Suena como un clásico problema de huevo y pollo para mí.
El terminal escribe sus preferencias actuales al salir y sobrescribe cualquiera de sus cambios, sin embargo, necesita la Terminal cargada para tener un shell para hacer esos cambios con PlistBuddy.
Puedo pensar en dos soluciones aquí:
1) escribe un pequeño script que puedes ejecutar desde un proceso que no sea Terminal ... ¿tal vez un Applescript o algo que puedas pasar a una llamada al system
desde una pequeña aplicación de Macintosh? :-)
2) simplemente cambie la "Configuración" a lo que desee yendo a las preferencias de la Terminal.
El comando "at" puede ejecutar un comando en el futuro.
$ at now + 1 minute
/usr/libexec/PlistBuddy -c "Set /"Window Settings/":Basic:shellExitAction 0" ~/Library/Preferences/com.apple.Terminal.plist
^D <<< press CTRL-D
job 3 at Mon Apr 24 15:34:00 2017
$ exit
Ahora salga de todos los terminales. Espere 1 minuto (como mínimo). Ahora inicie Terminal y verá que la configuración ha cambiado.