sgedit
글꼴, 탭 및 확장명에 대한 사용자 기본 설정을 상속 하는 스크립트를 사용합니다 . GUI 환경에서 안정성 sudo -H gedit
대신에 사용 gksu gedit
합니다. 암호를 묻습니다.
이 sudo
사용자 계정 상속 gedit
설정을
이 예제에서 글꼴 이름, 글꼴 크기, 탭 정지, 탭을 공백으로 변환, 80 열 강조 표시 및 오른쪽 축소판 슬라이더 막대에 대한 사용자 설정이에 의해 상속되었습니다 sudo
.
정기적으로 sudo -H gedit
이러한 구성 설정을 만들거나 저장할 수 없습니다. 아래 스크립트를 사용 sgedit
하면 설정이 사용자 계정에서 상속됩니다.
이 스크립트는 또한 " gksu
기본적으로 설치되어 있지 않으며 설치 pkexec
가 어렵습니다 "및 " 설치하기 어렵다"문제를 해결합니다.
배경
나는 몇 년 동안 같은 문제로 괴로워했습니다. 이번 주말 프로젝트는 sgedit
스크립트 를 작성하는 것이 었습니다 .
- 를 사용하여 전화
sgedit filename1 filename2...
- 탭 중지, 글꼴, 줄 바꿈 등에 대한 사용자의 gedit 설정을 가져옵니다.
- 이르게는 다음의 제품에
sudo -H
루트 권한을 얻는 동안 파일 소유권을 보존합니다.
- 마지막 sudo가 시간 초과 된 경우 암호를 요청합니다.
- sudo의 gedit 설정을 가져옵니다
- 사용자와 sudo gedit 설정의 차이점을 비교합니다
gsettings set
차이점 만 실행 합니다 (174 개 set
명령을 12 개 이하로 줄입니다. 다음 번에는 한두 번의 변경 만 수행하지만 대개는 아무 것도 실행하지 않습니다.
- 터미널 프롬프트가 즉시 다시 나타나도록 gedit를 백그라운드 작업으로 호출합니다.
배쉬 스크립트 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 $*;"
가정
위의 bash 스크립트를이라는 새 파일에 복사하십시오 sgedit
. $HOME/bin
디렉토리에 배치하는 것이 좋습니다 ( 예 :) /home/YOURNAME/bin
. 먼저 디렉토리를 작성해야 할 수도 있습니다.
다음을 사용하여 파일을 실행 파일로 표시하십시오.
chmod a+x ~/sgedit
참고 ~
는 바로 가기입니다 /home/YOURNAME
.
pkexec
대신 당신을 위해 일 합니까gksu
?