我在 Bash 脚本中有一组函数,我只想在特定版本的 Ubuntu 上运行它们。例如,如果我正在运行 Unity,我想运行以下命令:
gsettings set com.canonical.indicator.datetime show-week-numbers true
但如果我运行的是 Ubuntu GNOME,则会出现以下情况:
gsettings set org.gnome.shell.calendar show-weekdate true
同样,不同版本的 Ubuntu 也有不同的命令。
我尝试查看 的内容/etc/os-release
,但它没有提供任何有关 Ubuntu 风格的信息。以下是在 Ubuntu GNOME 上运行时:
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="14.04, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 14.04 LTS"
VERSION_ID="14.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
能否使用终端知道我正在运行哪种已识别的版本?我更希望使用开箱即用的解决方案,而无需为实时和已安装环境安装任何其他软件包。查找已安装的软件包是一种可能性,但我不想走这条路,尽管欢迎您在这方面给出答案。
答案1
这是我使用的命令。它对我来说一直都有效:
cat /var/log/installer/media-info
输出(我的系统)正确地告诉我我正在运行 Kubuntu
Kubuntu 14.04 LTS "Trusty Tahr" - Beta amd64 (20140326.2)
答案2
答案3
设置两者。设置所有内容。发射后不管。
这些设置足够独特,不会影响其他事情,所以应该是安全的……而且这比需要弄清楚发生了什么要容易得多。跑步... 可以确定安装了什么,但这并不能表明用户实际使用了什么。
答案4
如果您的目标是让某些桌面设置成为所有用户的默认设置,那么使用 Gsettings 架构覆盖让操作系统为您执行此操作会容易得多。例如,创建/usr/share/glib-2.0/schemas/99_my-settings.gschema.override
包含您的设置的设置,如下所示:
[com.canonical.indicator.datetime]
show-week-numbers=true
[org.gnome.desktop.calendar]
show-weekdate=true
使用Dconf 编辑器或 CLI 工具检查每个设置的正确架构(在方括号中)。您可以在每个架构下对多个设置进行分组。最后运行此命令,使它们成为所有用户的默认设置:
sudo glib-compile-schemas /usr/share/glib-2.0/schemas
这样,您甚至无需运行任何脚本,因为每个桌面环境在启动时都会找到其新的默认设置。此外,用户将能够个性化它们,而无需使用狡猾的启动脚本将它们改回原样。
以下是更多信息:https://developer.gnome.org/gio/stable/glib-compile-schemas.html