當我使用 root gedit 開啟檔案時,我希望有與普通 gedit 相同的設定。所以主題、偏好和外掛。
我可以在正確的位置設定一些符號連結來實現此目的嗎?
答案1
我認為這是不可能的,因為 gedit 透過 gconf 管理其設置,並且要同步這些設置,需要以 root 身分運行 gnome-settings-deamon。
答案2
您通常不會將普通 gedit 設定與 root gedit 使用者設定同步。
root有自己的設置,電腦使用者也有自己的設定。兩者並不相同。這是設計使然。
當您以 root 身分操作時,您將使用 root 使用者的設定檔;當您以您自己的身分操作時,您將使用您的個人設定檔。每個帳戶都有自己的權限和所有權,與該特定帳戶相關聯。它們的目的並不相同。
答案3
繼承sudo
了您的用戶帳戶gedit
設置
在此範例中,字體名稱、字體大小、製表符、將製表符轉換為空格、80 列突出顯示和右側縮圖滑桿欄的使用者設定已被 繼承sudo
。
常規情況下,sudo -H gedit
您無法建立或儲存這些配置設定。使用下面的腳本,sgedit
設定將從您的使用者帳戶繼承。
該腳本還解決了“gksu
不好且預設不安裝”和“pkexec
難以設定”的問題。
背景
多年來我一直被同樣的問題困擾著。這個週末的專案是編寫sgedit
腳本:
- 呼叫使用
sgedit filename1 filename2...
- 取得使用者的製表位、字型、換行等 gedit 設定。
- 提升為
sudo -H
保留檔案所有權,同時取得 root 權限。 - 如果最後一個 sudo 超時,則請求密碼。
- 取得 sudo 的 gedit 設置
- 比較使用者和 sudo gedit 設定之間的差異
gsettings set
僅在差異上運行(將 174 個set
命令減少到十幾個或更少。下次運行時可能只進行一兩個更改,但通常不會進行任何更改。- 呼叫 gedit 作為背景任務,以便終端提示立即重新出現。
bash腳本sgedit
#!/bin/bash
# NAME: sgedit
# PATH: /mnt/e/bin
# DESC: Run gedit as sudo using $USER preferences
# DATE: June 17, 2018.
# Must not prefix with sudo when calling script
if [[ $(id -u) == 0 ]]; then
zenity --error --text "You cannot call this script using sudo. Aborting."
exit 99
fi
# Get user preferences before elevating to sudo
gsettings list-recursively | grep -i gedit | grep -v history | \
grep -v docinfo | \
grep -v virtual-root | grep -v state.window > /tmp/gedit.gsettings
sudoFunc () {
# Must be running as sudo
if [[ $(id -u) != 0 ]]; then
zenity --error --text "Sudo password authentication failed. Aborting."
exit 99
fi
# Get sudo's gedit preferences
gsettings list-recursively | grep -i gedit | grep -v history | \
grep -v docinfo | \
grep -v virtual-root | grep -v state.window > /tmp/gedit.gsettings.root
diff /tmp/gedit.gsettings.root /tmp/gedit.gsettings | grep '>' > /tmp/gedit.gsettings.diff
sed -i 's/>/gsettings set/g; s/uint32 //g' /tmp/gedit.gsettings.diff
chmod +x /tmp/gedit.gsettings.diff
bash -x /tmp/gedit.gsettings.diff # Display override setting to terminal
# nohup gedit $@ &>/dev/null &
nohup gedit -g 1300x840+1+1220 $@ &>/dev/null &
# Set the X geometry window size (WIDTHxHEIGHT+X+Y).
}
FUNC=$(declare -f sudoFunc)
sudo -H bash -c "$FUNC; sudoFunc $*;"
exit 0
家政
將上面的 bash 腳本複製到名為 .bashrc 的新檔案中sgedit
。我建議將其放在您的$HOME/bin
目錄中,即/home/YOURNAME/bin
.您可能必須先建立目錄。
使用以下命令將檔案標記為可執行檔:
chmod a+x ~/sgedit
Note~
是 的快捷方式/home/YOURNAME
。