Cómo ejecutar automáticamente un script de shell al iniciar sesión en Ubuntu

15

¿Cómo consigo que un script se ejecute automáticamente cuando inicio sesión? No cuando la máquina se inicia, y no para todos los usuarios, sino solo cuando yo (o cualquier usuario específico con el script) inicie sesión a través de la interfaz de usuario de GNOME.

Al leer en otro lado, pensé que estaba .bash_profileen mi directorio personal, pero para mí no tiene ningún efecto. Cuando lo ejecuto manualmente en una ventana de terminal escribiendo ~/.bash_profile, funciona, pero no se ejecutará automáticamente cuando inicie sesión.

Estoy ejecutando Ubuntu 11.04. El permiso de archivo en mi .bash_profile es -rwx------. No existía .bash_profile en mi directorio personal antes de crearlo hoy.

Me parece recordar que las versiones anteriores de Linux tenían un .profilearchivo para cada usuario, pero eso tampoco funciona.

Como se hace ¿Necesito configurar algo más para que el .bash_profile funcione? ¿O el script de inicio de sesión por usuario debe estar en algún otro archivo?

Mike Rowave
fuente
.bash_profile, .profile y .bashrc (que es el que realmente usa ubuntu) se cargan cada vez que abre un terminal bash. De hecho, no estoy seguro de que se cargarán si solo inicias sesión en GDM.
Juan Sebastian Totero
Publicar su versión de Ubuntu podría ayudar. En Ubuntu 10.10 .bashrc "funciona para mí (TM)".
Vlueboy
¿Quieres decir cuando inicias sesión en la GUI o en el shell?
Flimzy
bash los carga cuando inicia un nuevo shell, por lo que solo se cargarán cuando abra una ventana de terminal o inicie sesión en un terminal virtual, no cuando inicie sesión en Gnome (GDM).
shiftycow
Estoy usando Ubuntu 11.04, como mencioné en la pregunta original.
Mike Rowave

Respuestas:

11

Simplemente puede agregar el siguiente comando en Sistema> Preferencias> Aplicaciones de inicio:

bash /full/path/to/your/script.sh

Eso debería hacer el truco ;)

Juan Sebastian Totero
fuente
Sabes qué, hice eso antes y no funcionó ... ¡excepto que no escribí "bash" antes del camino del guión! Lo intentaré con la fiesta más tarde. Por curiosidad, cuando ingresas algo a través de la GUI en Aplicaciones de inicio, ¿en qué archivo está registrado?
Mike Rowave
Los programas de inicio deben registrarse en/etc/xdg/autostart
shiftycow
¡Agregar bash /home/myusername/scriptnamea "Aplicaciones de inicio" funcionó! Gracias. Sin embargo, esto podría ser específico de GNOME en Ubuntu, por eso me preguntaba dónde están registradas las entradas en ese elemento del menú "Aplicaciones de inicio", ya que sería más probable que sea similar en otras versiones modernas de Linux.
Mike Rowave
2
/etc/xdg/autostartparece ser un archivo de todo el sistema, no específico de un usuario.
Mike Rowave
Para versiones posteriores de ubuntu, consulte askubuntu.com/questions/159887/…
TooTone
8

Básicamente, como sugirió nodiscc , cree un iniciador de escritorio: ~ / .config / autostart / script.desktop con el siguiente contenido:

[Desktop Entry]
Type=Application
Name=Autostart Script
Exec=autostart
Icon=system-run
X-GNOME-Autostart-enabled=true

Luego cree el script de inicio automático: ~ / bin / autostart con el contenido de su bash:

#!/bin/bash
# Execute bash script below

Asegúrese de que ~ / bin / autostart es ejecutable

Bert Regelink
fuente
5

Puedes agregar una línea en crontab -

crontab -e

Luego agregue esta línea al archivo que se abre:

@reboot /path/to/your/cool/script

Esto ejecutará el script al reiniciar. Para más detalles verman crontab

inLoveWithPython
fuente
No sé por qué, pero no puedo ejecutar archivos .sh en "aplicaciones de inicio", por lo tanto, la forma más fácil de hacerlo ahora es cron
Albert Català
1

Prueba ~/.xinitrc(alguna información aquí: https://wiki.archlinux.org/index.php/Xinitrc ). Recuerde que todo lo que comience en este script debe iniciarse / ejecutarse en segundo plano, o podría interferir con el inicio de sesión X.

Slartibartfast
fuente
-1

Ampliando la respuesta de @JuanSebastianTotero .

En lugar de:

bash /full/path/to/your/script.sh

Tratar

sh /full/path/to/your/script.sh

bashno funcionó para mí en Ubuntu 13.04y 14.04. Pero lo shhace.

Rahil Wazir
fuente