Запущенный .bash_profile скрипт при входе в систему

я работаю над deb пакетом, который позволяет администратору создавать другую учетную запись и выполнять ту учетную запись автоматически в режиме киоска. Я создал пользователя, указал shortkey и поместил это в скрытый файл и создал .bash_profile сценарий на администраторской учетной записи, которую я копирую в домашнюю папку нового пользователя.

Это - скрипт, который я запускаю, чтобы создать файлы и указать shortkey:

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

То содержание, которое копируется в .bash_profile, содержит код для отключения всех ключей от интерфейса как:

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

Теперь я только добавил строку для запуска браузера хрома к правильному веб-сайту

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

Я также изменил владельца .bash_profile сценария пользователю учетной записи и сделал его исполняемым файлом, прежде чем я скопировал его в домашнюю папку новых пользователей.

Теперь, когда я вхожу в систему на новом пользователе, этот сценарий ничего не делает. Кто-либо может видеть, где я помогаю неправильно меня находящий решение?

2
задан 12 March 2014 в 20:16

1 ответ

Основной вопрос здесь - то, что .bash_profile не читается, когда Вы делаете графический вход в систему. Это - определенный для удара файл, это читается, когда Вы запускаете оболочку входа в систему, и я очень сомневаюсь, что это будет когда-либо читаться на графическом входе в систему.

у Вас был бы лучший шанс с помощью ~/.profile вместо этого, который является i) читайте большинством оболочек входа в систему, не только колотите, таким образом, Вы не ограничиваете своего пользователя определенной оболочкой и ii) намного более вероятно быть считанным графическим входом в систему.

я просто проверил, что это и .profile действительно читается на Ubuntu 13.04, когда Вы входите в систему графически. Однако Вы не можете предположить, что это будет всегда иметь место. Для получения дополнительной информации см. превосходный ответ Gilles здесь .

Теперь, несколько деталей. Нет никакой потребности в touch, echo "foo" >> bar создаст файл bar, если он не будет существовать и добавлять к нему, если он делает. Кроме того, нет никакой потребности в .bash_profile, чтобы быть исполняемым файлом, файл получен, не выполнен. Я не знаю, вызвало ли это проблемы, но это могло бы.

Наконец, группа файла будет корнем, не пользователь. Снова, не уверенный, если это - проблема, но можно также добавить это к сценарию:

chown $user:$user .profile

Примечание, которое .profile проигнорировано ударом , если файл, названный ~/.bash_profile, существует. Это не должно влиять на графические логины, но может вызвать неожиданное поведение при входе в систему из командной строки.

2
ответ дан 8 October 2019 в 11:52

Другие вопросы по тегам:

Похожие вопросы: