ログイン時に.bash_profileスクリプトを実行する

ログイン時に.bash_profileスクリプトを実行する

私は、管理者が別のアカウントを作成し、そのアカウントをキオスク モードで自動的に実行できるようにする deb パッケージに取り組んでいます。ユーザーを作成し、ショートカットを指定してそれを隠しファイルに格納し、管理者アカウントに .bash_profile スクリプトを作成して、新しいユーザーのホーム フォルダーにコピーしました。

これは、ファイルを作成し、ショートキーを指定するために実行しているスクリプトです。

#!/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 スクリプトの所有者をアカウント ユーザーに変更し、新しいユーザーのホーム フォルダーにコピーする前に実行可能にしました。

新しいユーザーでログインすると、このスクリプトは何も実行しません。どこが間違っているのか、解決策を見つけるのを手伝ってくれる人はいませんか?

答え1

ここでの主な問題は、.bash_profileグラフィカル ログインを行うときに読み込まれないことです。これは bash 固有のファイルであり、ログイン シェルを起動するときに読み込まれますが、グラフィカル ログインで読み込まれることはまずないと思われます。

~/.profile代わりに を使用すると、i) bash だけでなくほとんどのログイン シェルで読み取られるため、ユーザーを特定のシェルに制限せず、ii) グラフィカル ログインで読み取られる可能性がはるかに高くなります。

確認したところ、.profileUbuntu 13.04 でグラフィカルにログインすると確かに読み込まれます。ただし、常にそうであるとは限らないことに注意してください。詳細については、Gilles の優れた回答を参照してください。ここ

さて、いくつかの小さな点について。 は必要ありませんtouch。 は、echo "foo" >> barファイルbarが存在しない場合は作成し、存在する場合はファイルに追加します。 また、 を実行可能にする必要もありません.bash_profile。ファイルはソース化されるものであり、実行されるものではありません。 これが問題を引き起こすかどうかはわかりませんが、問題を引き起こす可能性はあります。

最後に、ファイルのグループはユーザーのグループではなく、ルートになります。これも問題かどうかはわかりませんが、スクリプトに以下を追加することもできます。

chown $user:$user .profile

ご了承ください.profile bashでは無視されますというファイルが~/.bash_profile存在する場合。これはグラフィカル ログインには影響しませんが、コマンド ラインからログインするときに予期しない動作を引き起こす可能性があります。

関連情報