1

У меня есть несколько компьютеров Linux с одним диском и одной домашней папкой.

То есть на диске есть домашняя папка: \home\wuciawe

А для компьютера A, ОС которого называется Centos, он загрузит \home\wuciawe\.bashrc

Для компьютера B, операционной системой которого является Ubuntu, он загрузит \home\wuciawe\.bashrc , то же самое с компьютером A.

Поскольку я не являюсь администратором, я создаю и устанавливаю некоторое программное обеспечение локально в Ubuntu и добавляю что-то в путь в \home\wuciawe\.bashrc .

По какой-то причине, что-то, добавленное к Пути, противоречит Centos.

Интересно, есть ли способ сообщить .bashrc текущую систему, сделайте что-то вроде следующего:

if os is Ubuntu:
  Path = xxx:$PATH
  export PATH
endif

2 ответа2

1

Вы можете попробовать найти в /etc/issue имена ОС. Содержимое файла используется getty для отображения сообщения перед входом в систему. Со страницы руководства по issue(5):

Файл /etc /issue представляет собой текстовый файл, который содержит сообщение или идентификацию системы, которые должны быть напечатаны до приглашения на вход в систему. Он может содержать различные последовательности @char и \char, если поддерживается программой типа getty, используемой в системе.

Пожалуйста, смотрите сообщение @ John2014 о том, как выполнить поиск в сценарии оболочки.

0

Ubuntu

if grep -i Ubuntu /etc/lsb-release &>/dev/null
then
  export PATH=xxx:$PATH
fi

Заметки

  • В shell нет двоеточия в конце оператора if .

  • В оболочке вам не нужны пробелы по обе стороны от знака равенства в операторе присваивания.

  • В оболочке, if операторы заключены с оператором fi

CentOS

Для CentOS есть аналогичное решение:

if grep -i CentOS /etc/centos-release &>/dev/null
then
  export PATH=xxx:$PATH
fi

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .