Как я могу сказать, является ли сборка находящейся в Debian?

Если я понимаю Вас правильно, Вы хотите изменить подсказку при запуске текущей команды. Я не думаю, что удар имеет изменяющую подсказку функцию, но можно, возможно, перерисовать по подсказке, если можно определить местоположение его (не настолько легкий для многострочных команд).

В zsh Вы использовали бы precmd функция. Bash не имеет подобной функции, но он может быть изрублен.

8
25.01.2012, 21:17
5 ответов

Выполнение uname -a должен дать Вам немного общей информации о системе. Кроме того, можно работать apropos "package manager" или с подобными ключевыми словами для обнадеживающего обнаружения больше о диспетчере пакетов. Заглянуть /etc для названного файла xyz-release где xyz должен быть любой дистрибутив, работает.

2
27.01.2020, 20:11
  • 1
    Это - то, что я получаю, когда я выполняю uname-a: $ uname-a Linux 10.0.1.46 2.6.31-2.5 # 7 четверг 15 декабря 19:57:09 CST 2 011 миллионов операций в секунду $ –  Sparky1 25.01.2012, 19:40
  • 2
    @Sparky1 Затем кажется, что Вы вовлекли себя распределение Linux-MIPS. –   25.01.2012, 21:05

Проверьте вывод:

lsb_release -a

и:

cat /etc/issue

Можно также проверить на большее количество команд пакета низкого рычага rpm для Redhat и dpkg для Debian.

2
27.01.2020, 20:11
  • 1
    GNU/Linux dpkg команда, не найденная об/мин $ (показывает варианты для команды об/мин). Похож на это красная основанная на шляпе сборка. Спасибо за справку! –  Sparky1 25.01.2012, 19:43
  • 2
    можно также проверить/etc/debian_version файл, который существует во всем debian, основывал Прохладный дистрибутив Linux –  Coren 25.01.2012, 22:30
  • 3
    Также установите его использование apt-get install lsb-release если это не установлено. –  Massood Khaari 18.08.2016, 11:23

Если это будет встроенное устройство (например, маршрутизатор Сохо), то это, вероятно, не будет ни один из дистрибутивов "рабочего стола/сервера". Я попытался бы изучить руководство устройства, веб-сайт производителя (должен иметь источник к GPL-лицензированному коду), и сеть в целом.

1
27.01.2020, 20:11

Для тестирования систем Debian вы можете проверить, существует ли / etc / debian_version :

if [ -f "/etc/debian_version" ];
   #do stuff
fi

Должен быть включен Debian и системы на его основе (включая Ubuntu и его производные), хотя некоторые могут не иметь его - в этом случае вы можете проверить файлы / etc / * release :

if [ "$(grep -Ei 'debian|buntu|mint' /etc/*release)" ]; then
   #do stuff
fi

Где debian | buntu | mint - это список имен дистрибутивов для поиска (без учета регистра) - вы можете получить представление о некоторых распространенных производных от здесь , хотя производные от debian, такие как Ubuntu , имеют свои собственные производные .


Для систем на основе RedHat производные используют больший диапазон файлов и могут не иметь установленного lsb-release, поэтому вы можете применить следующие методы:

  • получить название выпуска из lsb_release -i 2> / dev / null | sed 's /: \ t /: /' | cut -d ':' -f 2-
  • Проверьте DISTRIB-ID в файле lsb-release - «Резервный метод, который, вероятно, не нужен в современных системах», также файл явно отсутствует в Fedora и не содержит DISTRIB_ID в OpenSUSE

  • , проверьте наличие некоторых из следующих

    • / etc / fedora-release и / или / etc / redhat-release для RedHat или Fedora
    • / etc / SuSE-release для SuSe
    • / etc / mandriva-release для mandriva / mageia
  • используйте метод, аналогичный последнему debian:

     if ["$ (grep -Ei 'fedora | redhat' / etc / * release)"]; затем 
     ...
     

Первые 3 пункта, которые я получил из cron обновления Google Chrome, чтобы вы могли изучить и его, чтобы узнать больше (он также определяет менеджеры пакетов)


Для более широкого круга ОС, прочтите этот пост на SO должен помочь.

6
27.01.2020, 20:11

uname -aиcat /proc/version(читать -только для суперпользователей ), по моему честному мнению, являются единственными правильными ответами на этот вопрос, так как остальные -, такие как lsb_release, /etc/issueили cat /proc/sys/kernel/version-, являются недоступно/не для использования в каждой системе (и даже в официальных дистрибутивах Debian ). Также не беспокойтесь об использовании /etc/*releases, /etc/*version, так как они могут быть изменены. Последний доступен не во всех дистрибутивах Debian.

Возможны другие варианты (не рекомендуется):

  • Проверьте наличие dashили проверьте, связано ли shс dash(, оно должно использоваться по умолчанию для запуска скриптов)
  • Проверьте диспетчер пакетов, выполнив>/dev/null 2>&1 dpkg --version && {... }
0
27.01.2020, 20:11

Теги

Похожие вопросы