
我正在開發一個 deb 包,它允許管理員建立另一個帳戶並在 kiosk 模式下自動執行該帳戶。我創建了一個用戶,指定了一個快捷鍵並將其放入隱藏文件中,然後在管理員帳戶上創建了一個 .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 []
現在我只添加了一行來啟動 chromium 瀏覽器到正確的網站
/usr/bin/chromium-browser www.google.be --kiosk --no-default-browser-check --disable-translate
我還將 .bash_profile 腳本的所有者更改為帳戶用戶,並使其可執行,然後將其複製到新用戶主資料夾。
現在,當我登入新使用者時,此腳本不執行任何操作。誰能看到我錯在哪裡幫助我找到解決方案?
答案1
這裡的主要問題是.bash_profile
當您進行圖形登入時不會讀取該內容。這是一個特定於 bash 的文件,當您啟動登入 shell 時會讀取它,我非常懷疑它是否會在圖形登入時讀取。
您將有更好的機會使用~/.profile
i) 被大多數登入 shell 讀取,而不僅僅是 bash,因此您不會將您的使用者限制為特定的 shell 以及 ii) 更有可能被圖形登入讀取。
我剛剛檢查了這個,.profile
當您以圖形方式登入時,確實在 Ubuntu 13.04 上讀取了此內容。但是,您不能假設情況總是如此。有關更多詳細信息,請參閱 Gilles 的精彩回答這裡。
現在,有幾個小問題。不需要touch
,如果文件不存在則echo "foo" >> bar
建立該文件,如果存在則追加到該文件。bar
此外,不需要.bash_profile
可執行,該文件是來源的,而不是運行的。我不知道這是否會導致問題,但可能會導致問題。
最後,文件的群組將是root,而不是使用者的。同樣,不確定這是否是一個問題,但您也可以將其添加到腳本中:
chown $user:$user .profile
注意.profile
被 bash 忽略如果名為的檔案~/.bash_profile
存在。這不會影響圖形登錄,但可能會在從命令列登入時導致意外行為。