登入時執行 .bash_profile 腳本

登入時執行 .bash_profile 腳本

我正在開發一個 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 時會讀取它,我非常懷疑它是否會在圖形登入時讀取。

您將有更好的機會使用~/.profilei) 被大多數登入 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存在。這不會影響圖形登錄,但可能會在從命令列登入時導致意外行為。

相關內容