Ich verwende ein Skript mit dem Namen, sgeditdas die Benutzervorgaben für Schriftarten, Registerkarten und Erweiterungen übernimmt. Es wird sudo -H geditanstelle von gksu geditfür die Stabilität in der GUI-Umgebung verwendet. Es fordert zur Eingabe eines Passworts auf.
Haben Sie sudoIhre Benutzerkontoeinstellungen geditgeerbt

In diesem Beispiel wurden die Benutzereinstellungen für den Schriftartnamen, die Schriftgröße, die Tabulatoren, die Umwandlung von Tabulatoren in Leerzeichen, die Hervorhebung von 80 Spalten und den Schieberegler für Miniaturansichten auf der rechten Seite von übernommen sudo.
Mit regular können sudo -H geditSie diese Konfigurationseinstellungen weder vornehmen noch speichern. Mit dem folgenden Skript werden sgeditdie Einstellungen von Ihrem Benutzerkonto übernommen.
Dieses Skript behebt auch die Probleme " gksuist schlecht und nicht standardmäßig installiert" und " pkexecist schwer einzurichten".
Hintergrund
Ich bin seit Jahren von demselben Problem geplagt. Das Projekt dieses Wochenendes bestand darin, das sgeditDrehbuch zu schreiben :
- Mit anrufen
sgedit filename1 filename2...
- Ruft die gedit-Einstellungen des Benutzers für Tabulatoren, Schriftarten, Zeilenumbruch usw. ab.
- Erhöht,
sudo -Hum den Dateieigentum beizubehalten und gleichzeitig Root- Rechte zu erhalten.
- Fordert das Passwort an, wenn das letzte Sudo abgelaufen ist.
- Ruft die gedit-Einstellungen von sudo ab
- Vergleicht die Unterschiede zwischen Benutzer- und Sudo Gedit-Einstellungen
- Läuft nur
gsettings setmit den Unterschieden (reduziert 174 setBefehle auf ein Dutzend oder weniger. Beim nächsten Mal werden vielleicht nur ein oder zwei Änderungen ausgeführt, aber oftmals keine.
- Ruft gedit als Hintergrundaufgabe auf, sodass die Eingabeaufforderung des Terminals sofort wieder angezeigt wird.
Bash-Skript 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 &
}
FUNC=$(declare -f sudoFunc)
sudo -H bash -c "$FUNC; sudoFunc $*;"
Housekeeping
Kopieren Sie das obige Bash-Skript in eine neue Datei mit dem Namen sgedit. Ich empfehle es in Ihrem $HOME/binVerzeichnis zu platzieren, dh /home/YOURNAME/bin. Möglicherweise müssen Sie zuerst das Verzeichnis erstellen.
Markieren Sie die Datei als ausführbar mit:
chmod a+x ~/sgedit
Hinweis ~ist eine Abkürzung für /home/YOURNAME.
pkexecfür Sie stattgksu?