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)
两者都设置。设置一切。火并忘记。
这些设置足够独特,不会影响其他事情,所以它应该是安全的...而且这比需要计算出正在运行的内容要容易得多...计算出安装的内容是可能的,但这不是一个指示用户实际使用的内容。
下面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。您必须区分始终仅以您感兴趣的风味运行的特定过程。