¿Cómo escribir un script de shell que se ejecuta al iniciar sesión?


16

Estoy tratando de escribir un script de shell bash en Ubuntu 11.10 Linux distro, que se ejecutará automáticamente al iniciar sesión en el sistema. Pero no puedo entender qué escribir en un script que se ejecutará automáticamente al iniciar sesión.

Respuestas:


18

Si desea que sea global, modifique

 /etc/profile 

o agregue un script a

 /etc/profile.d

Si desea que sea específico del usuario, modifique

 /home/$USER/.profile

1
No olvides que la extensión debería ser .shsi pones tu script dentro de /etc/profile.d/. chmode +x /etc/profile.d/myscript.shpor supuesto también
Brian Haak

Estiramiento de Raspbian. Intentando ejecutar el /usr/local/bin/pihole -ccomando en el inicio de sesión automático de un usuario específico. Se agregó esta línea a /home/$USER/.profile- no pasa nada. Cuando agrego un script /etc/profile.d, funciona, pero es global y lo ejecuta incluso cuando abro la sesión ssh (que no es lo que quiero). Agregar a .bashrcfunciona también, pero se ejecuta cada vez que abro un nuevo shell (que no es lo que quiero). Pregunta: ¿Por qué agregar a /home/$USER/.profileno funcionaría?
Dibujó el

3

Simplemente agregue el script bash a las aplicaciones de inicio.

En el campo de comando, ingrese

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

2
¿Cómo se agrega "bash /.../script.sh" a las aplicaciones de inicio desde la línea de comandos?
aleb 01 de

1
OP nunca mencionó una GUI; ¿Qué pasa si están en un servidor remoto a través de SSH y no tienen una GUI? Ninguna de las etiquetas de escritorio se aplicó a la pregunta ...
Doktor J

El título menciona específicamente al iniciar sesión y nada sobre las GUI de escritorio.
RichieHH

0

Si desea ser más específico de bash, también puede escribir su código en ~ / .bash_profile o ~ / .bash_login.

Y puede obtener cualquier script allí, por ejemplo:

if [ -f ~/.bashrc ]; then
   source ~/.bashrc
fi

0

/etc/profileo $HOME/.profileo$HOME/.bash_profile

Recomiendo encarecidamente no usar /etc/profile.d/yourscript.shsi produce salida. Cuando use una sesión no interactiva, recibirá un $TERM is not setmensaje. Esto se nota cuando se usa el protocolo ssh, como scp. Por lo general, no es un gran problema, sin embargo, a Veeam no le gusta y lanzará una advertencia. Sé que Veeam no es el tema aquí, pero vale la pena mencionar que no todas las aplicaciones ignorarán la $TERM is not setadvertencia.

En resumen, si el script genera salida, colóquelo en las ubicaciones especificadas en la primera línea. Sin embargo, si está modificando el entorno y su secuencia de comandos no genera resultados, utilice esta última.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.