Me pregunto si alguien puede ayudarme a ejecutar 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á. Un poco de ayuda por favor.
Respuestas:
Sigue esto:
Automator.app
Application
Show library
en la barra de herramientas (si está oculto)Run shell script
(desde elActions/Utilities
)guardar en algún lugar (por ejemplo, puede hacer una
Applications
carpeta en su INICIO, obtendrá unyour_name.app
)ir a
System Preferences
->Accounts
->Login items
EDITAR:
Recientemente obtuve 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 en el momento de inicio de sesión se describe en la respuesta de @ trisweb , a menos que desee interactividad .
Con la solución de automatización puede hacer cosas como las siguientes:
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 de inicio de sesión, ejecutar aplicaciones condicionalmente en el momento de inicio de sesión, etc.
fuente
tl; dr: lanzador proceso nativo uso de OSX y gerente,
launchd
.Para hacerlo, haz un
launchctl
demonio. Tendrás control total sobre todos los aspectos del guión. Puedes correr una vez o mantenerte vivo como un demonio. En la mayoría de los casos, este es el camino a seguir..plist
archivo de acuerdo con las instrucciones en los documentos de Apple Dev aquí o más detalles a continuación.~/Library/LaunchAgents
launchctl load [filename.plist]
)Para más información
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 .
Reemplace
<string>
después de la tecla Programa con su comando deseado (tenga en cuenta que cualquier script al que haga referencia ese comando debe ser ejecutable:chmod a+x /path/to/executable/script.sh
para asegurarse de que sea para todos los usuarios).Guardar como
~/Library/LaunchAgents/com.user.loginscript.plist
Ejecutar
launchctl load ~/Library/LaunchAgents/com.user.loginscript.plist
y cerrar sesión / iniciar sesión para probar (o para probar directamente, ejecutarlaunchctl start com.user.loginscript
)Cola
/var/log/system.log
para mensajes de error.La clave es que esta es una entrada iniciada 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 (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.
fuente
launchctl
que simplemente es mucho mejor en la mayoría de los casos, y le brinda más control sobre todos los aspectos posibles de la ejecución de su script. Es más en el sentido de "¿por qué usar un método menos capaz cuando existe launchd?" (Tenga en cuenta que he cambiado la primera oración para indicar que personalmente no los recomiendo para esta situación).Cree su script de shell como
login.sh
en su carpeta $ HOME.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"
Luego guárdelo como una aplicación.
Finalmente, agregue la aplicación a sus elementos de inicio de sesión.
Si desea que el resultado del script sea visual, puede cambiar el paso 2 por esto:
Si se necesitan varios comandos, se puede usar algo como esto:
fuente
Go to System Preferences -> Accounts -> Login items
y marque la casilla Ocultar para esta aplicación.~/Library/LaunchAgents
carpeta?