Синтаксис bash: Определение версии дистрибутива Linux
Пытаюсь установить приложение, но исполняемый скрипт определил, что Debian 8.2 не соответсвует требованиям установке. Так ли оно на самом деле? Вот часть исходника (определение версии Linux):
# Find out what flavor of Linux were running on. Added NX075P30 if $( grep -i "SuSE " /proc/version 1>$NULL 2>&1) ; then # Its SuSE. MIN_REV=10 # Minimum SuSE version. RELEASE_FILE=/etc/SuSE-release # Path to the release info file. # Check the rev level by reading VERSION out of the release file. if SUSE_REV=$(grep -i VERSION $RELEASE_FILE 2>$NULL) ; then # Edit out anything but numbers. #SUSE_REV=$(echo $SUSE_REV | sed 's![A-Z,a-z,=,-. ]!!g') # Translate out anything BUT digits, we just want the number(s). SUSE_REV=$(echo $SUSE_REV | tr -cd [:digit:] ) # Check for the minimum rev. [ "$SUSE_REV" -lt $MIN_REV ] && < # Must be at least MIN_REV. print "$Unsupported Linux version: SuSE $SUSE_REV. \r\t The $PRODNAME $NX_VER required minimum is: SuSE $." >&2 sleep 3 > else # Couldnt find the file or couldnt get the version num. print "$Unable to determine SuSE Linux version. \r\t Could not find SuSE release file: $RELEASE_FILE \r\t or, could not get SuSE version number from file. \r\t The minimum required version is: SuSE $. \r\t $PRODNAME $NX_VER MAY not run on this machine. " >&2 sleep 3 fi # Now find X11/app-defaults dir. It moved so check two known places. [ -d /usr/share/X11/app-defaults ] && < # Ck New location. X11_DEFS_DIR=/usr/share/X11/app-defaults ;>: $ # Default to old location. elif $( grep -i "RED HAT " /proc/version 1>$NULL 2>&1) ; then # Its Red Hat. # Not much to do here, just set X11_DEFS_DIR. X11_DEFS_DIR=/usr/share/X11/app-defaults # X11 app-defaults dir. else # Couldnt detect SuSE or Red Hat so give unsuppored message and quit. print "$ Unrecognized or unsupported Linux." >&2 exit 1 fi PATH=.:/sbin:/usr/sbin:/usr/bin:/bin:/etc ; export PATH # Set the PATH UGS_TMP=/tmp/ugs_tmp # Define a stash area for old files. PS_CMD="ps -ef" # ps command for this system. DF_CMD="df -k" # df command for this system. AWK_CMD=awk # awk command for this system. TMP_DIR=/tmp # Tmp directory. LPATH_VAR_NAME=LD_LIBRARY_PATH # Library path var name. V160P14 alias -x pwd='pwd -L' # Tweak Linux pwd to give logical pwd. alias -x uncompress=gunzip # On SuSE 10 must use gunzip. NX050P24
Насколько я понимаю, скрипт выполняет проверку соответствия дистрибутива из семейства openSUSE (поправьте меня если ошибаюсь). По структуре каталогов, вроде как проблем не нахожу. Что касается условия, тот я не силен, и прошу помощи в определении:
grep -i "SuSE " /proc/version 1>$NULL 2>&1
Какая конструкция была бы верная, относительно дистрибутива Debian 8.2?
Как узнать свою версию Bash
Если у вас не работают примеры Bash кода, которые вы нашли онлайн или в учебниках, то одной из причин проблем может быть несоответствие версий. Или даже у вас может быть запущен не Bash, а одна из других многочисленных оболочек Linux.
Данная статья расскажет, как проверить используемую версию Bash и как убедиться, что вы работаете именно в Bash, а не в другой оболочке.
1.
Этот метод проверить версию Bash также позволит вам убедиться, что вы работаете именно в Bash:
echo $BASH_VERSION
5.0.17(1)-release
Если вы используете другую оболочку, то ничего не будет выведено.
2.
Следующее сочетание клавиш покажет информацию о текущем экземпляре Bash, возможно вам будет проще его запомнить, чем имя переменной окружения:
Ctrl+x Ctrl+v
GNU bash, версия 5.0.17(1)-release (x86_64-pc-linux-gnu)
3.
Запуск bash с опцией —version:
bash --version
Помните, что в этом случае версия bash будет выведена даже если в вашей текущей оболочке не используется bash, но bash установлен в системе.
4.
Если у вас система в обновлённом состоянии, то вы можете проверить версию Bash в репозиториях вашего дистрибутива — она будет соответствовать версии в вашей системе.
Для Debian, Linux Mint, Ubuntu, Kali Linux и их производных это можно сделать следующей командой:
apt info bash
apt show bash
В Arch Linux, BlackArch и их производных:
Как узнать версию Linux из консоли?

Как известно, различные версии Linux-дистрибутов имеют отличия в используемых командах, пакетах и прочим. И вот Вы подключились по SSH к некоей машине, и первое что необходимо это выяснить, это с каким дитрибутивом Вы имеете дело.
В нашем случае это Ubuntu 14.04.2 LTS
КАК ВЫЯСНИТЬ ВЕРСИЮ ДИСТРИБУТИВА LINUX ИЗ КОНСОЛИ?
Довольно большое количество дистрибутовов, можно определить с помощью команды: lsb_release -a
root@tea:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.2 LTS
Release: 14.04
Codename: trusty
Информацию, внесённую разработчиками, можно посмотреть с помощью команды: cat
root@tea: cat /etc/*-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.2 LTS"
NAME="Ubuntu"
VERSION="14.04.2 LTS, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 14.04.2 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/"
Ещё можно сделать так: cat /etc/issue
root@tea: cat /etc/issue
Ubuntu 14.04.2 LTS \n \l
Получить информацию о версии Linux можно следующим образом: cat /proc/version
root@tea: cat /proc/version
Linux version 3.13.0-49-generic (buildd@toyol) (gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) )
#81-Ubuntu SMP Tue Mar 24 19:29:15 UTC 2015
Или вот так: dmesg | grep «Linux version»
root@tea: dmesg | grep "Linux version"
[ 0.000000] Linux version 3.13.0-49-generic (buildd@toyol) (gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) )
#81-Ubuntu SMP Tue Mar 24 19:29:15 UTC 2015 (Ubuntu 3.13.0-49.81-generic 3.13.11-ckt17)
КАК УЗНАТЬ ВЕРСИЮ ЯДРА LINUX?
Порой, для выполнения определённых операций, необходимо выяснить версию ядра Linux. Вот некоторые из них:
uname -r
root@tea:~$ uname -r 3.13.0-49-generic
uname -mrs
root@cat:~$ uname -mrs Linux 3.13.0-49-generic i686
uname -a
root@tea:~$ uname -a Linux cat 3.13.0-49-generic #81-Ubuntu SMP Tue Mar 24 19:29:15 UTC 2015 i686 i686 i686 GNU/Linux
Вообще, команда uname умеет больше, чем написано выше. Посмотрим на вывод команды uname —help :
-a, --all напечатать всю информацию, в следующем порядке,
кроме -p и -i, если они неизвестны:
-s, --kernel-name напечатать имя ядра
-n, --nodename напечатать имя машины в сети
-r, --release напечатать номер выпуска операционной системы
-v, --kernel-version напечатать версию ядра
-m, --machine напечатать тип оборудования машины
-p, --processor напечатать тип процессора или «неизвестно»
-i, --hardware-platform напечатать тип аппаратной платформы или «неизвестно»
-o, --operating-system напечатать имя операционной системы
--help показать эту справку и выйти
--version показать информацию о версии и выйти
Кроме того, посмотреть версию ядра и дистрибутива можно с помощью различных помошников, например системного скрипта inxi . Перед использованием его необходимо установить.
inxi -S
root@tea:~# inxi -S System: Host: cat Kernel: 3.13.0-49-generic i686 (32 bit) Desktop: N/A Distro: Ubuntu 14.04 trusty
Заказать услугу
Оформите заявку на сайте, мы свяжемся с вами в ближайшее время и ответим на все интересующие вопросы.
MNorin.com
Блог про Linux, Bash и другие информационные технологии
Как узнать версию операционной системы на основе ядра Linux
Вопрос: На компьютере установлена операционная система на базе ядра Linux, но я не знаю, какая. Как это узнать?
Ответ:
lsb_release -a
2) Командой «ls /etc | grep version» и командой «ls /etc | grep release» найти файлы, в названии которых встречается «version» или «release», если такие есть, и вывести их содержимое
Можно это сделать одной строкой, например, так:
cd /etc; ls | grep version | xargs cat && ls | grep release | xargs cat
Если же надо просто узнать версию ядра Linux, то для этого используется команда
uname -a
Похожие посты:
- Как в linux посмотреть пользователей?
- Замена traceroute командой ping
- Анализ состава локальной сети при помощи команды ping
- Настройка WiFi из командной строки
- Как сделать man-страницу для своей программы
- Разница времени в Linux и Windows на одном компьютере.
- JSLinux — Эмулятор Linux на JavaScript
- Фейковый SMTP-сервер на bash
- Как освободить место на диске
- Скрипт, который работает и в Linux, и в Windows