내~/.bashrc
Terminal() {
TerminalDarkProfile="b1dcc9dd-5262-4d8d-a863-c897e6d979b9"
TerminalLightProfile="3dd28c15-6ba4-4ba0-8289-ab023e6c88fc"
Gsetting="org.gnome.Terminal.ProfilesList"
[[ "${1}" == 'Light' ]] && gsettings set "${Gsetting}" default "${TerminalLightProfile}"
[[ "${1}" == 'Dark' ]] && gsettings set "${Gsetting}" default "${TerminalDarkProfile}"
gsettings get "${Gsetting}" default
}
bash 터미널에 입력하면 Terminal Light
출력이 없으며 Gnome 터미널 색상이 변경되지 않습니다.
하지만 수동으로 함수를 터미널에 붙여넣으면 다음과 같습니다.
$ Terminal() {
TerminalDarkProfile="b1dcc9dd-5262-4d8d-a863-c897e6d979b9"
TerminalLightProfile="3dd28c15-6ba4-4ba0-8289-ab023e6c88fc"
Gsetting="org.gnome.Terminal.ProfilesList"
[[ "${1}" == 'Light' ]] && gsettings set "${Gsetting}" default "${TerminalLightProfile}"
[[ "${1}" == 'Dark' ]] && gsettings set "${Gsetting}" default "${TerminalDarkProfile}"
gsettings get "${Gsetting}" default
}
$ Terminal Light
'3dd28c15-6ba4-4ba0-8289-ab023e6c88fc'
그러면 gsettings가 작동하고 gnome 터미널 프로필이 실제로 변경되었음을 확인할 수 있습니다!
질문
왜 이런 일이 발생합니까? 정의된 스크립트 또는 bash 함수 내부에서 gsettings를 변경하는 방법~/.bashrc
편집하다
$ type Terminal
bash: type Terminal: command not found
$ Terminal Dark
놀랐지 type Terminal: command not found
만 Terminal Dark
출력이 나오지 않습니다!
또한:
cat Theme.sh
#!/usr/bin/env bash
set -xv
echo $DBUS_SESSION_BUS_ADDRESS
whoami
gsettings set org.gnome.desktop.interface color-scheme 'prefer-light'
gsettings get org.gnome.desktop.interface color-scheme
$ bash ./Theme.sh
echo $DBUS_SESSION_BUS_ADDRESS
+ echo unix:path=/run/user/1000/bus
unix:path=/run/user/1000/bus
whoami
+ whoami
lamy
gsettings set org.gnome.desktop.interface color-scheme 'prefer-light'
+ gsettings set org.gnome.desktop.interface color-scheme prefer-light
gsettings get org.gnome.desktop.interface color-scheme
+ gsettings get org.gnome.desktop.interface color-scheme
'prefer-light'
$ gsettings get org.gnome.desktop.interface color-scheme
'prefer-dark'
gsettings get
스크립트를 실행한 직후에 다양한 값이 표시되는 것을 볼 수 있습니다 !