2 votes

Exécuter .bash_profile script à la connexion

Je travaille sur un paquet deb qui permet à l'administrateur de créer un autre compte et d'exécuter ce compte automatiquement en mode kiosque. J'ai créé l'utilisateur, spécifié une clé courte et l'ai placée dans un fichier caché, et créé un .bash_profile script sur le compte administrateur que je copie dans le dossier personnel du nouvel utilisateur.

Voici le script que j'exécute pour créer les fichiers et spécifier le raccourci clavier :

#!/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

Ce contenu qui est copié dans .bash_profile contient du code pour désactiver toutes les clés de l'interface comme :

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

Maintenant, j'ai seulement ajouté une ligne pour lancer le navigateur Chrome vers le bon site web

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

J'ai également changé le propriétaire du .bash_profile script pour l'utilisateur du compte et l'ai rendu exécutable avant de le copier dans le dossier personnel des nouveaux utilisateurs.

Maintenant quand je me connecte sur le nouvel utilisateur, ce script ne fait rien. Quelqu'un peut-il voir où je me trompe ou m'aider à trouver la solution ?

2voto

Stewart Points 1385

Le principal problème ici est que .bash_profile n'est pas lu lorsque vous effectuez une connexion graphique. C'est un fichier spécifique au bash, il est lu lorsque vous lancez un login Shell et je doute fort qu'il soit jamais lu lors d'un login graphique.

Vous auriez plus de chances en utilisant ~/.profile à la place qui est i) lu par la plupart des shells de connexion, pas seulement bash, donc vous ne limitez pas votre utilisateur à un Shell spécifique et ii) beaucoup plus susceptible d'être lu par une connexion graphique.

Je viens de vérifier et .profile est effectivement lu sur Ubuntu 13.04 lorsque vous vous connectez graphiquement. Cependant, vous ne pouvez pas supposer que ce sera toujours le cas. Pour plus de détails, voir l'excellente réponse de Gilles aquí .

Maintenant, quelques points mineurs. Il n'y a pas besoin de touch , echo "foo" >> bar créera le fichier bar s'il n'existe pas et l'ajoute s'il existe. De plus, il n'y a pas besoin de .bash_profile pour être exécutable, le fichier est sourcé, pas exécuté. Je ne sais pas si cela peut poser des problèmes, mais c'est possible.

Enfin, le groupe du fichier sera root, et non celui de l'utilisateur. Encore une fois, je ne suis pas sûr que ce soit un problème mais vous pouvez aussi bien ajouter ceci à votre script :

chown $user:$user .profile

Notez que .profile est ignoré par bash si un fichier appelé ~/.bash_profile existe. Cela ne devrait pas affecter les connexions graphiques mais peut provoquer un comportement inattendu lors de la connexion à partir de la ligne de commande.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X