Ejecutar script al iniciar sesión mac [cerrado]


Me pregunto si alguien puede ayudarme a obtener un archivo .sh para ejecutarse cuando inicio sesión en mi cuenta en mi computadora. Estoy ejecutando Mac OS X 10.6.7.

Tengo un archivo "Example.sh" que quiero ejecutar cuando inicie sesión en mi computadora. No tengo problemas para ejecutarlo cuando ya he iniciado sesión, pero quiero que se ejecute automáticamente.

La gente está diciendo que lo agregue al archivo de shell de inicio de sesión, pero no sé dónde está. Un poco de ayuda, por favor.

Author: Vertexwahn, 2011-06-22

3 answers

Puedes:

  • inicie Automator.app
  • Seleccione "Aplicación"
  • haga clic en" Mostrar biblioteca " en la barra de herramientas (si está oculta)
  • Añadir "Ejecutar shell script" (de las Acciones/Utilidades)
  • Copie y pegue su script en la ventana
  • Pruébelo
  • Guardar en algún lugar, por ejemplo, puede hacer una carpeta "Aplicaciones" en su CASA (obtendrá un your_name.app)

    Actualizar: Para macOS más recientes, nombra tu archivo your_name.command en lugar de your_name.app

  • Vaya a Preferencias del sistema -> Cuentas - > Elementos de inicio de sesión

  • Añadir esta aplicación
  • test & done;)

EDITAR:

Recientemente he ganado una insignia de "Buena respuesta" por esta respuesta. Si bien mi solución es simple y funciona, la forma más limpia de ejecutar cualquier programa o script de shell al iniciar sesión se describe en @ trisweb's answer, a menos que quieras interactividad .

Con la solución automator puedes hacer cosas como siguiente: aplicación de inicio de sesión de captura de pantalla de automator

Por lo tanto, pedir ejecutar un script o salir de la aplicación, preguntar contraseñas, ejecutar otros flujos de trabajo de automator en el momento de inicio de sesión, ejecutar aplicaciones condicionalmente en el momento de inicio de sesión y así sucesivamente...

 271
Author: jm666,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:10:44

Tl;dr: usa el gestor y lanzador de procesos nativos de OSX, launchd.

Para hacerlo, crea un demonio launchctl. Tendrás control total sobre todos los aspectos del script. Puedes correr una vez o mantenerte vivo como un demonio. En la mayoría de los casos, este es el camino a seguir.

  1. Cree un archivo .plistde acuerdo con las instrucciones en los documentos de Apple Dev aquí o más detalles a continuación.
  2. Lugar en ~/Library/LaunchAgents
  3. Inicie sesión (o ejecute manualmente a través de launchctl load [filename.plist])

Para más información sobre launchd, el artículo de wikipedia es bastante bueno y describe el sistema y sus ventajas sobre otros sistemas más antiguos.


Aquí está el archivo plist específico para ejecutar un script al iniciar sesión.

Actualizado el 25/09/2017 para OSX El Capitan y posteriores (crédito a José Messias Jr):

<?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>com.user.loginscript</string>
   <key>ProgramArguments</key>
   <array><string>/path/to/executable/script.sh</string></array>
   <key>RunAtLoad</key>
   <true/>
</dict>
</plist>

Reemplace el <string> después de la tecla Program con el comando deseado.

Guardar como ~/Library/LaunchAgents/com.user.loginscript.plist

Ejecute launchctl load ~/Library/LaunchAgents/com.user.loginscript.plist y cierre sesión para probar (o para probar directamente, ejecutar launchctl start com.user.loginscript)

Tail /var/log/system.log para mensajes de error.

La clave es que esta es una entrada launchd específica del usuario, por lo que se ejecutará al iniciar sesión para el usuario dado. Los demonios de lanzamiento específicos del sistema (ubicados en /Library/LaunchDaemons) se ejecutan al arrancar.

Si desea que se ejecute un script al iniciar sesión para todos los usuarios, creo que LoginHook es su única opción, y esa es probablemente la razón por la que existe.

 310
Author: trisweb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-05 08:50:41
  1. Cree su script de shell como login.sh en su carpeta HOME HOME.

  2. Pegue el siguiente script de una línea en el Editor de Scripts:

    Hacer shell script ""HOME/login.sh"

  3. Luego guárdelo como una aplicación.

  4. Finalmente agregue la aplicación a sus elementos de inicio de sesión.

Si desea que la salida del script sea visual, puede cambiar el paso 2 por esto:

tell application "Terminal"
  activate
  do script "$HOME/login.sh"
end tell

Si se necesitan varios comandos, algo como esto puede ser usado:

tell application "Terminal"
  activate
  do script "cd $HOME"
  do script "./login.sh" in window 1
end tell
 35
Author: anubhava,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-25 15:02:39