ฉันใช้สคริปต์ที่เรียกว่าsgedit
สืบทอดการกำหนดลักษณะของผู้ใช้สำหรับแบบอักษรแท็บและส่วนขยาย มันใช้sudo -H gedit
แทนgksu gedit
เพื่อความมั่นคงในสภาพแวดล้อม GUI มันจะถามรหัสผ่าน
มีsudo
สืบทอดบัญชีผู้ใช้ของคุณgedit
ตั้งค่า
ในตัวอย่างนี้การตั้งค่าของผู้ใช้สำหรับชื่อตัวอักษรขนาดตัวอักษรแท็บหยุด, แปลงแท็บไปที่ช่องว่าง 80 sudo
ไฮไลต์คอลัมน์และด้านขวาภาพขนาดย่อแถบเลื่อนได้รับการสืบทอดโดย
ด้วยปกติsudo -H gedit
คุณจะไม่สามารถสร้างหรือบันทึกการตั้งค่าเหล่านี้ได้ ด้วยสคริปต์ด้านล่างsgedit
การตั้งค่าได้รับมาจากบัญชีผู้ใช้ของคุณ
สคริปต์นี้ยังระบุถึงปัญหา " gksu
ไม่ดีและไม่ได้ติดตั้งตามค่าเริ่มต้น" และ " pkexec
ยากต่อการติดตั้ง"
พื้นหลัง
ฉันถูกจับโดยปัญหาเดียวกันมานานหลายปี โครงการวันหยุดสุดสัปดาห์นี้คือการเขียนsgedit
สคริปต์:
- โทรโดยใช้
sgedit filename1 filename2...
- รับการตั้งค่า gedit ของผู้ใช้สำหรับการหยุดแท็บฟอนต์บรรทัดการตัด ฯลฯ
- เลื่อนไปที่
sudo -H
เพื่อรักษาความเป็นเจ้าของไฟล์ในขณะที่รับพลังของรูท
- ร้องขอรหัสผ่านหาก sudo ล่าสุดหมดเวลา
- รับการตั้งค่า gedit ของ sudo
- เปรียบเทียบความแตกต่างระหว่างการตั้งค่าผู้ใช้กับการตั้งค่า sudo gedit
- ทำงาน
gsettings set
กับความแตกต่างเท่านั้น (ลดset
คำสั่ง174 คำสั่งเป็นโหลหรือน้อยกว่า) ในครั้งต่อไปอาจมีการเปลี่ยนแปลงเพียงหนึ่งหรือสองครั้ง
- โทร gedit เป็นงานพื้นหลังเพื่อให้ terminal ปรากฏขึ้นอีกครั้งทันที
Bash script 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 $*;"
การเรียน
sgedit
คัดลอกสคริปต์ทุบตีข้างต้นเป็นไฟล์ใหม่ที่เรียกว่า ผมขอแนะนำให้วางไว้ในของคุณไดเรกทอรีเช่น$HOME/bin
/home/YOURNAME/bin
คุณอาจต้องสร้างไดเรกทอรีก่อน
ทำเครื่องหมายไฟล์ว่าสามารถเรียกทำงานได้โดยใช้:
chmod a+x ~/sgedit
หมายเหตุเป็นทางลัดสำหรับ~
/home/YOURNAME
pkexec
ทำงานสำหรับคุณแทนgksu
?