Ejecute el script .bash_profile al iniciar sesión

Ejecute el script .bash_profile al iniciar sesión

Estoy trabajando en un paquete deb que permite al administrador crear otra cuenta y ejecutarla automáticamente en modo quiosco. Creé el usuario, especifiqué una tecla rápida y la puse en un archivo oculto, y creé un script .bash_profile en la cuenta de administrador que copié en la carpeta de inicio del nuevo usuario.

Este es el script que estoy ejecutando para crear los archivos y especificar la tecla abreviada:

#!/bin/bash
basis="Primary + Alt + "
shortkey=`zenity --entry --text "Your shortkey will be a combination of <Primary> + <Alt> + a letter\n\n Specify your letter!"`

while [[ $shortkey = *[^A-Z]* ]];
        do
                zenity --warning --text "Input incorrect\n\nTry again"
                shortkey=`zenity --entry --text "Your shortkey will be a combination of <Primary> + <Alt> + a letter\n\n Specify your letter!"`

done
        basis="$basis$shortkey"
zenity --info --text "$basis" --title="Your shortkey"

touch kiosk/kiosk-0.1/.mykey
echo "gsettings set org.gnome.desktop.wm.keybindings close [$basis]" > kiosk/kiosk-0.1/.mykey

user=$(cat kiosk/kiosk-0.1/.username)
keys=$(cat kiosk/kiosk-0.1/keys)
content=$(cat kiosk/kiosk-0.1/.mykey)

touch kiosk/kiosk-0.1/.bash_profile
echo "#!/bin/bash" >> .bash_profile
echo "" >> .bash_profile
echo $keys >> .bash_profile
echo $content >> .bash_profile
chmod +x .bash_profile
chown $user .bash_profile
mv '.bash_profile' /home/$user

Ese contenido que se copia en .bash_profile contiene código para deshabilitar todas las claves de la interfaz como:

gsettings set org.gnome.desktop.wm.keybindings begin-move []

Ahora solo agregué una línea para iniciar el navegador Chrome en el sitio web correcto.

/usr/bin/chromium-browser www.google.be --kiosk --no-default-browser-check --disable-translate

También cambié el propietario del script .bash_profile al usuario de la cuenta y lo hice ejecutable antes de copiarlo en la carpeta de inicio del nuevo usuario.

Ahora, cuando inicio sesión con el nuevo usuario, este script no hace nada. ¿Alguien puede ver en qué me equivoco y ayudarme a encontrar la solución?

Respuesta1

El problema principal aquí es que .bash_profileno se lee cuando inicia sesión gráficamente. Es un archivo específico de bash, se lee cuando inicias un shell de inicio de sesión y dudo mucho que alguna vez se lea al iniciar sesión gráficamente.

Tendría más posibilidades de usar ~/.profileen su lugar, que es i) leído por la mayoría de los shells de inicio de sesión, no solo bash, por lo que no está limitando a su usuario a un shell específico y ii) es mucho más probable que lo lea un inicio de sesión gráfico.

Acabo de comprobar esto y, .profilede hecho, se lee en Ubuntu 13.04 cuando inicias sesión gráficamente. Sin embargo, no se puede asumir que ese será siempre el caso. Para obtener más detalles, consulte la excelente respuesta de Gilles.aquí.

Ahora, un par de puntos menores. No es necesario touch, echo "foo" >> barcreará el archivo barsi no existe y lo agregará si existe. Además, no es necesario que .bash_profilesea ejecutable, el archivo se obtiene, no se ejecuta. No sé si eso causaría problemas, pero podría serlo.

Finalmente, el grupo del archivo será el root, no el del usuario. Nuevamente, no estoy seguro si esto es un problema, pero también puedes agregar esto a tu script:

chown $user:$user .profile

Tenga en cuenta que.profile es ignorado por bashsi existe un archivo llamado ~/.bash_profile. Esto no debería afectar los inicios de sesión gráficos, pero puede provocar un comportamiento inesperado al iniciar sesión desde la línea de comandos.

información relacionada