teamviewer solo sesión quitar que programas olvide mac los llavero inicio iniciar inicia gestionar ejecutan cómo contraseña como bloquear automatico abre bash shell login terminal osx-snow-leopard

bash - sesión - spotify se inicia solo mac



Ejecutando script al iniciar sesión mac (3)

Me pregunto si alguien puede ayudarme a conseguir que se ejecute 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 deseo 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 se agregue al archivo de shell de inicio de sesión, pero no sé dónde está. Un poco de ayuda por favor.


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

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

    hacer shell script "$ 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 intercambiar 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


Usted puede:

  • iniciar Automator.app
  • Seleccione "Aplicación"
  • haga clic en "Mostrar biblioteca" en la barra de herramientas (si está oculta)
  • Agregue "Ejecutar shell script" (desde Acciones / Utilidades)
  • Copia y pega tu script en la ventana
  • Pruébalo
  • Guarde en algún lugar, por ejemplo, puede crear una carpeta de "Aplicaciones" en su INICIO (obtendrá un nombre_su.app)

    Actualización : Para la última your_name.command macOS, your_name.command nombre a su archivo your_name.command lugar de your_name.app

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

  • Añadir esta aplicación
  • prueba y hecho;)

EDITAR:

Recientemente obtuve una insignia de "Buena respuesta" por esta respuesta. Si bien mi solución es simple y funciona, la forma más sencilla de ejecutar cualquier programa 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 automator puedes hacer las siguientes cosas:

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


tl; dr: use el iniciador y gestor de procesos nativos de OSX, launchd .

Para hacerlo, haz 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 .plist acuerdo con las instrucciones de los documentos de Apple Dev que se encuentran 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 2017/09/25 para OSX El Capitan y más reciente (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 la <string> después de la tecla Programa con el comando deseado.

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

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

Cola /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á en el inicio de sesión para el usuario dado. Los demonios de lanzamiento específicos del sistema (colocados en /Library/LaunchDaemons ) se ejecutan en el arranque.

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.