Окружающая среда

Работая с оболочкой командной строки в Linux, она хранит информацию о текущей сессии, которая называется окружающей средой. Данные среды окружения используются программами для определения конфигурации. Большинство программ используют конфигурационные файлы для хранения настроек. Но некоторые могут использовать значения переменных окружения, которые влияют на их выполнения. Это позволяет нам более гибко настроить оболочку интерфейса командной строки под наши нужды.

Что же такое окружающая среда?

Linux shell хранит два типа данных в среде окружения. В bash они почти неразличимы. Это переменные окружения и переменные оболочки. Переменные среды — это биты данных, которые хранятся там программой bash, все остальное переменные окружающей среды. Помимо переменных оболочка может сохранять и псевдонимы (alises) и функции. О них мы поговорим позже.

Исследование среды

Чтобы посмотреть, что хранится в среде, можно воспользоваться командой set, которая встроена в bash, либо программой printenv. Команда set выведет и переменные оболочки и переменные окружения, а printenv только переменные окружения. Так как список содержания среды слишком длинный, то удобнее его перенаправить в программу less, которая позволит перемещаться по нему как при просмотре файла.

При выполнении этой команды мы получим примерно следующее.

Результат printenv внутри less

Мы видим список переменных окружения и их значения. Например, переменная с названием USER имеет значение «mikhail». С помощью printenv можно также получить значение только определенной переменной.

При использовании команды set без параметров и аргументов будут выведены переменные оболочки и переменные окружения. В отличии от printenv список будет отсортирован по названию переменных в алфавитном порядке.

При выполнении этой команды результат будет примерно следующим.

Результат set внутри less

Также можно узнать содержание переменной с помощью команды echo и развертывания строк используя символ $ перед именем переменной.

Псевдонимы, они же aliases, также являются частью среды но не выводятся командами set или echo. Чтобы из увидеть можно воспользоваться командой alias.

Некоторые интересные переменные

Хотя среда содержит достаточно много переменных окружения и они могут отличаться от представленных тут, следующие можно встретить почти везде.

  • DISPLAY — имя экрана при использовании графического пользовательского интерфейса. Обычно совпадает с «:0», что обозначает имя первого экрана, которое создана графическим интерфейсом X Server.
  • EDITOR — имя программы, которая используется для редактирования текста.
  • SHELL — имя программы, используемой как Linux Shell.
  • HOME — путь к домашней директории пользователя.
  • LANG — текущий язык и кодировка.
  • OLD_PWD — путь к предыдущей рабочей директории.
  • PAGER — имя программы, используемой для постраничного вывода текста.
  • PATH — разделенный двоеточием список директорий, используемый для поиска программы при вводе ее имени без указания полного пути
  • PS1 — строка приветствия 1. Определяет содержания строки приветствия Linux Shell.
  • PWD — путь к текущей рабочей директории
  • TERM — имя эмулятора терминала.
  • TZ — Текущий часовой пояс.
  • USER — имя пользователя.

Тест по основам Linux

После прочтения раздела знакомство с Linux предлагаю ответить на несколько вопросов для самотестирования. Это простой тест на оценку памяти и соображалку по первой главе.

Правила простые. Есть несколько вопросов. На каждый вопрос нужно дать правильный ответ. При выборе ответа с возможность выбрать несколько вариантов нужно выбрать все подходящие варианты. При сдаче теста будет отображена информация о количестве правильных ответов, их процентном соотношении и расшифровка ошибок по вопросам. Тест можно проходить неограниченное количество раз, подключение к интернету после загрузке этой страницы не требуется 🙂

  1. Куда можно установить Linux?
  2. В каком режиме выполняется работа с коммандной строкой Linux?
  3. Какая команда выводит полный путь к текущей директории?
  4. Какая команда выводит список содержание директории /etc?
  5. Какая команда выполняет переход в домашнюю директорию?
  6. С помощью каких программ можно вывести содержание файла?
  7. Какая команда создает директорию test в текущей директории?
  8. Какой символ или символы используются для перенаправления стандартного вывода в конец существующего файла?
  9. Какой символ или символы используются для перенаправление вывода программы на ввод другой программы?
  10. Какой результат выполнения команды echo {a{b,c},b{1..3},e{d..g},c}?
  11. Какая программа изменяет разрешения прав доступа к файлу?
  12. Какая программа выводит список запущенных процессов?
  13. Какой сигнал безусловно прекращает выполнение процесса?