我是否可以知道使用终端正在运行哪种可识别的风格?

我是否可以知道使用终端正在运行哪种可识别的风格?

我在 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

也许不是这样的味道Ubuntu徐本图鲁本图等等。因为奥利&特登您可以安装的评论Ubuntu但运行西门子作为桌面。

因此,你可以获取环境变量的值XDG_CURRENT_DESKTOP了解当前桌面正在运行什么。

例如:

  • echo $XDG_CURRENT_DESKTOP

笔记:
变量的值可以是Unity、GNOME、XFCE、KDE、LXDE、Pantheon(基本操作系统)。

希望这可以帮助。

答案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

相关内容