Führen Sie das Skript .bash_profile bei der Anmeldung aus

Führen Sie das Skript .bash_profile bei der Anmeldung aus

ich arbeite an einem Deb-Paket, das es dem Administrator ermöglicht, ein weiteres Konto zu erstellen und dieses Konto automatisch im Kioskmodus auszuführen. Ich habe den Benutzer erstellt, einen Kurzschlüssel angegeben und diesen in eine versteckte Datei eingefügt und ein .bash_profile-Skript für das Administratorkonto erstellt, das ich in den Home-Ordner des neuen Benutzers kopiere.

Dies ist das Skript, das ich ausführe, um die Dateien zu erstellen und die Tastenkombination anzugeben:

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

Der nach .bash_profile kopierte Inhalt enthält Code zum Deaktivieren aller Tasten der Schnittstelle, wie:

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

Jetzt habe ich nur noch eine Zeile hinzugefügt, um den Chromium-Browser auf der richtigen Website zu starten

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

Ich habe auch den Besitzer des .bash_profile-Skripts in das Kontobenutzerkonto geändert und es ausführbar gemacht, bevor ich es in den Home-Ordner des neuen Benutzers kopiert habe.

Wenn ich mich jetzt als neuer Benutzer anmelde, passiert in diesem Skript nichts. Kann jemand erkennen, wo ich falsch liege, oder mir bei der Lösung helfen?

Antwort1

Das Hauptproblem hierbei ist, dass es .bash_profilebei einem grafischen Login nicht gelesen wird. Es handelt sich um eine Bash-spezifische Datei, die gelesen wird, wenn Sie eine Login-Shell starten, und ich bezweifle sehr, dass sie bei einem grafischen Login jemals gelesen wird.

Sie hätten bessere Chancen, wenn Sie ~/.profilestattdessen verwenden würden. Dies wird i) von den meisten Anmelde-Shells gelesen, nicht nur von Bash, so dass Sie Ihren Benutzer nicht auf eine bestimmte Shell beschränken, und ii) ist die Wahrscheinlichkeit, dass es von einer grafischen Anmeldung gelesen wird, viel höher.

Ich habe das gerade überprüft und .profilees wird tatsächlich unter Ubuntu 13.04 gelesen, wenn Sie sich grafisch anmelden. Sie können jedoch nicht davon ausgehen, dass dies immer der Fall sein wird. Weitere Einzelheiten finden Sie in Gilles‘ ausgezeichneter AntwortHier.

Nun ein paar kleinere Punkte. Es besteht keine Notwendigkeit für touch, echo "foo" >> barwird die Datei erstellen, barwenn sie nicht existiert, und an sie anhängen, wenn sie existiert. Außerdem muss es nicht .bash_profileausführbar sein, die Datei wird als Quelle verwendet, nicht ausgeführt. Ich weiß nicht, ob das Probleme verursachen würde, aber es könnte sein.

Schließlich wird die Gruppe der Datei root sein, nicht die des Benutzers. Auch hier bin ich mir nicht sicher, ob das ein Problem ist, aber Sie können Ihrem Skript auch Folgendes hinzufügen:

chown $user:$user .profile

Beachten Sie, dass.profile wird von Bash ignoriertwenn eine Datei mit dem Namen ~/.bash_profileexistiert. Dies sollte grafische Anmeldungen nicht beeinträchtigen, kann aber zu unerwartetem Verhalten führen, wenn Sie sich über die Befehlszeile anmelden.

verwandte Informationen