AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1023006
Accepted
Saran Sankaran
Saran Sankaran
Asked: 2018-04-09 00:11:24 +0800 CST2018-04-09 00:11:24 +0800 CST 2018-04-09 00:11:24 +0800 CST

gsettings:找不到命令

  • 772

我正在尝试创建一个脚本,它会在运行时自动更改壁纸。

#!/bin/bash

cd ~/
rm -r ~/.wallpaper
mkdir .wallpaper
cd ~/.wallpaper

wget https://source.unsplash.com/random/1920x1080
USER=$(whoami)
PATH="file:///home/$USER/.wallpaper/1920x1080"
echo $PATH
gsettings set org.gnome.desktop.background picture-uri "$PATH"

但是当我这样做时,./change_wallpaper.sh我得到了正确的回声,但是然后

./change_wallpaper.sh:第 12 行:gsettings:找不到命令

但是,当我从终端运行相同的命令时,它执行得很好并且墙纸正在改变。

当我运行whereis gsettings它告诉

gsettings:/usr/bin/gsettings /usr/share/man/man1/gsettings.1.gz

为什么gsettings: command not found我从脚本执行时显示?

gnome wallpaper bash
  • 2 2 个回答
  • 3716 Views

2 个回答

  • Voted
  1. L. D. James
    2018-04-09T02:22:30+08:002018-04-09T02:22:30+08:00

    您的脚本不适用于所有人。 您为用户设置的 home 变量对于HOME位置与/home/user. 例如,我个人空间的家庭位置是/home/user/l/j/ljames.

    而不是将路径设置为,"file:///home/$USER/.wallpaper/1920x1080"您应该更正确地将其更改为"file:///$HOME/.wallpaper/1920x1080". 该变量$HOME已经扩展到用户的完整家庭空间。

    如果进行以下更改,您的脚本将起作用:

    #!/bin/bash
    
    cd ~/
    rm -r ~/.wallpaper
    mkdir .wallpaper
    cd ~/.wallpaper
    
    wget https://source.unsplash.com/random/1920x1080
    # USER=$(whoami) This line isn't neccesary.)    
    path="file:///$HOME/.wallpaper/1920x1080"
    echo $path
    gsettings set org.gnome.desktop.background picture-uri "$path"
    

    一个更有效的例子是:

    #!/bin/bash
    
    [ ! -d ~/.wallpaper ] && mkdir ~/.wallpaper
    cd ~/.wallpaper
    wget -O 1920x1080 https://source.unsplash.com/random/
    path="file:///$HOME/.wallpaper/1920x1080"
    rm ~/.cache/wallpaper/*
    gsettings set org.gnome.desktop.background picture-uri "$path"
    

    行的解释是:

    Line #1:  Create wallpaper directory if it doesn't exist.
    Line #2:  Move to the folder.
    Line #3:  Overwrite the current file with the new wallpaper.
    Line #4:  Set the pathname variable.
    Line #5:  Removed the Wallpaper cache for image change detection.
    Line #6:  Active the new wallpaper.
    
    • 5
  2. Best Answer
    PerlDuck
    2018-04-09T01:13:49+08:002018-04-09T01:13:49+08:00

    因为你改变了PATH你的脚本。此保留变量用于定位可执行文件。使用另一个变量。

    与 相同USER:它也被保留并且已经包含当前用户,即您不需要设置USER=$(whoami)。

    通常,在 shell 脚本中创建变量时,最好使用小写名称。通常,预定义变量(如HOME, USER, PATH)都是大写的,避免覆盖它们的简单方法是在自己的脚本中使用小写名称。或者使用一些前缀,例如MY_PATH,MY_USER等等。

    • 4

相关问题

  • 备份 bash 脚本未压缩其 tarball

  • 是否有适用于 IMAP 邮件帐户的 Gnome 小程序?

  • 如何创建桌面墙纸幻灯片?

  • 如何提交壁纸以考虑包含在 Ubuntu 中?

  • 如果顶部面板中缺少会话小程序,如何注销?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve