質問

質問

私の~/.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スクリプトを実行した直後にさまざまな値が表示されることがわかります。

関連情報