Execute o script .bash_profile no login

Execute o script .bash_profile no login

estou trabalhando em um pacote deb que permite ao administrador criar outra conta e executá-la automaticamente no modo quiosque. Criei o usuário, especifiquei uma tecla de atalho e coloquei-a em um arquivo oculto e criei um script .bash_profile na conta de administrador que copiei para a pasta inicial do novo usuário.

Este é o script que estou executando para criar os arquivos e especificar a tecla de atalho:

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

O conteúdo copiado para .bash_profile contém código para desabilitar todas as chaves da interface como:

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

Agora adicionei apenas uma linha para iniciar o navegador chromium no site certo

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

Também mudei o proprietário do script .bash_profile para o usuário da conta e tornei-o executável antes de copiá-lo para a pasta inicial dos novos usuários.

Agora, quando faço login no novo usuário, esse script não faz nada. Alguém pode ver onde estou errado e me ajudar a encontrar a solução?

Responder1

O principal problema aqui é que .bash_profilenão é lido quando você faz um login gráfico. É um arquivo específico do bash, é lido quando você inicia um shell de login e duvido muito que seja lido no login gráfico.

Você teria uma chance melhor de usar ~/.profilei) lido pela maioria dos shells de login, não apenas pelo bash, para não limitar seu usuário a um shell específico e ii) com muito mais probabilidade de ser lido por um login gráfico.

Acabei de verificar isso e .profilerealmente é lido no Ubuntu 13.04 quando você faz login graficamente. No entanto, você não pode presumir que sempre será assim. Para mais detalhes, veja a excelente resposta de Gillesaqui.

Agora, alguns pontos menores. Não há necessidade de touchcriar echo "foo" >> baro arquivo barse ele não existir e anexá-lo se existir. Além disso, não há necessidade de .bash_profileser executável, o arquivo é originado, não executado. Não sei se isso causaria problemas, mas pode.

Finalmente, o grupo do arquivo será root, não o do usuário. Novamente, não tenho certeza se isso é um problema, mas você também pode adicionar isto ao seu script:

chown $user:$user .profile

Observe que.profile é ignorado pelo bashse um arquivo chamado ~/.bash_profileexistir. Isso não deve afetar os logins gráficos, mas pode causar um comportamento inesperado ao efetuar login a partir da linha de comando.

informação relacionada