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

Adi*_*tya 8 command-line derivatives release-management

我在 bash 脚本中有一组函数,我只想在特定版本的 Ubuntu 上运行。例如,如果我正在运行 Unity,我想运行以下命令:

gsettings set com.canonical.indicator.datetime show-week-numbers true
Run Code Online (Sandbox Code Playgroud)

但如果我运行的是 Ubuntu GNOME,则会出现以下情况:

gsettings set org.gnome.shell.calendar show-weekdate true
Run Code Online (Sandbox Code Playgroud)

同样,不同风格的 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/"
Run Code Online (Sandbox Code Playgroud)

是否有可能知道我正在使用终端运行哪种可识别的风味?我更喜欢开箱即用的解决方案,无需为实时环境和已安装环境安装任何其他软件包。寻找安装了哪些软件包是可能的,但我不想走那条路,尽管欢迎您在那个方向上给出答案。

csh*_*rao 12

这是我使用的命令。它一直对我有用:

cat /var/log/installer/media-info 
Run Code Online (Sandbox Code Playgroud)

输出(我的系统)正确地告诉我我正在运行 Kubuntu

Kubuntu 14.04 LTS "Trusty Tahr" - Beta amd64 (20140326.2)
Run Code Online (Sandbox Code Playgroud)


Rom*_*uet 8

也许不像KubuntuXubuntuLubuntu等风格。因为正如Oliterdon评论的那样,您可以安装Kubuntu,但将XFCE作为桌面运行。

因此,您可以通过环境变量XDG_CURRENT_DESKTOP的值来了解当前桌面正在运行的内容。

例如:

  • echo $XDG_CURRENT_DESKTOP

注意:
变量的值可以是Unity、GNOME、XFCE、KDE、LXDE、Pantheon (Elementary os)。

希望这可以帮助。


Oli*_*Oli 2

两者都设置。设置一切。火并忘记。

这些设置足够独特,不会影响其他事情,所以它应该是安全的...而且这比需要计算出正在运行的内容要容易得多...计算出安装的内容是可能的,但这不是一个指示用户实际使用的内容。

  • 即使有一种方法(几乎肯定有)也不能保证用户处于该环境中。你可以在 Ubuntu 上安装 gnome 和 KDE,但它仍然是 Ubuntu。 (2认同)

Rad*_*anu 0

下面if将显示您是否正在运行 Unity:

if [[ "$(ps -ef | grep unity | grep $USER | grep -v grep)" =~ "unity" ]]; then 
    echo "I'm running Unity"; 
fi
Run Code Online (Sandbox Code Playgroud)

以同样的方式,您可以检查您是否正在运行 GNOME 或其他风格。重要的是您首先使用的进程的(部分)名称grep。您必须区分始终仅以您感兴趣的风味运行的特定过程。