Ejecutar script al inicio de sesión mac

Me pregunto si alguien puede ayudarme con la ejecución de un archivo .sh 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 inicio sesión en mi computadora. No tengo problemas para ejecutarlo cuando ya estoy conectado, pero quiero que esto se ejecute automáticamente.

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

Usted puede:

  • inicia Automator.app
  • Seleccione “Aplicación”
  • haga clic en “Mostrar biblioteca” en la barra de herramientas (si está oculta)
  • Agregue “Ejecutar script de shell” (desde las Acciones / Utilidades)
  • Copie y pegue su script en la ventana
  • Pruébalo
  • Guarde en alguna parte, por ejemplo, puede crear una carpeta de “Aplicaciones” en su CASA (obtendrá un nombre de usuario .app)

    Actualización : para los últimos macOS, nombre su archivo your_name.command lugar de your_name.app

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

  • Agrega esta aplicación
  • prueba y hecho;)

EDITAR:

Recientemente obtuve una insignia de “Buena respuesta” para esta respuesta. Si bien mi solución es simple y funciona, la forma más limpia de ejecutar cualquier progtwig o script de shell en el momento del inicio de sesión se describe en la respuesta de @ trisweb , a menos que desee interactividad .

Con la solución de automatizador puede hacer cosas como la siguiente: aplicación de inicio de sesión de pantalla del autómata

por lo tanto, solicitar ejecutar un script o salir de la aplicación, solicitar contraseñas, ejecutar otros flujos de trabajo del automatizador en el momento del inicio de sesión, ejecutar aplicaciones de manera condicional en el momento del inicio de sesión y así sucesivamente …

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

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

  1. Cree un archivo .plist acuerdo con las instrucciones en los documentos de Apple Dev aquí o más detalles a continuación.
  2. Colocar en ~/Library/LaunchAgents
  3. Inicie sesión (o ejecute manualmente mediante 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 más reciente (crédito a José Messias Jr ):

     Label com.user.loginscript ProgramArguments /path/to/executable/script.sh RunAtLoad    

Reemplace la después de la tecla de Progtwig con el comando deseado.

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

Ejecute launchctl load ~/Library/LaunchAgents/com.user.loginscript.plist y logout / in para probar (o para probar directamente, ejecute launchctl start com.user.loginscript )

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

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

Si desea que se ejecute una secuencia de comandos 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.

  1. Cree su script de shell como login.sh en su carpeta $ HOME.

  2. Pegue la siguiente secuencia de comandos de una línea en el Editor de secuencias de comandos:

    hacer el script de shell “$ HOME / login.sh”

  3. Luego guárdalo 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, se puede usar algo como esto:

 tell application "Terminal" activate do script "cd $HOME" do script "./login.sh" in window 1 end tell