Как решить проблемы с переменными среды, не установленными в скрипте Bash
Переменные среды используются для изменения поведения среды. Эти переменные могут изменить работу программного обеспечения или приложения. Настройка переменных среды имеет несколько применений в bash. Такие переменные могут использоваться для хранения чего угодно.
Более того, в каждой системе есть определенные переменные среды, которые она использует при взаимодействии с пользователем. В этой статье мы сначала рассмотрим основы сценариев bash, настроим переменные среды и манипулируем ими, а затем рассмотрим некоторые способы решения связанных с этим проблем.
Баш-скрипты
В Ubuntu почти каждую задачу можно выполнить с помощью графического пользовательского интерфейса или оболочки командной строки. Некоторые задачи легче выполнять с помощью оболочки, а не с помощью графического интерфейса. Скрипты — это файлы, состоящие из команд. Все эти команды выполняются при выполнении файла сценария. Скрипты Bash — это такие скрипты, которые используют интерпретатор Bash.
Расширение скриптов .sh. Скрипты можно писать в любом текстовом редакторе. Каждый сценарий bash начинается со строки #!/bin/bash, которая указывает системе использовать интерпретатор bash.
Переменные среды
Переменные среды обладают свойствами локальности процесса, наследования и чувствительности к регистру. Локальность процесса означает, что переменные среды являются исключительными для конкретного экземпляра оболочки, если не указано иное. Наследование относится к отношениям родитель-потомок между различными средами.
Чувствительность к регистру, как следует из названия, означает, что переменные среды чувствительны к изменению регистра. Как правило, формат переменных среды зависит от родительской системы. Однако все переменные окружения имеют две общие черты; имя переменной и сохраненное значение.
Имя переменной может быть любым, но значение должно быть в формате, совместимом с типом переменной среды. Это особенно важно при работе с переменными среды, созданными системой. Например, переменная среды LANG отвечает за выбор языка, который приложение использует для общения с пользователем. Его значение зависит от местоположения, но обычно в США оно будет иметь значение «en_US.UTF-8».
Управление переменными среды
Существует несколько графических утилит для поиска, настройки и редактирования переменных среды, но в этой статье мы рассмотрим, как работать с такими переменными в командной строке bash.
Чтобы создать новую переменную среды, вы можете использовать команду экспорта. Существует несколько способов создания переменной среды. Вы можете сначала определить переменную, а затем экспортировать ее. Мы создадим переменную EDITOR со значением nano (текстовый редактор), а затем экспортируем ее.
$ export EDITOR
Другой способ создания переменных среды — определить их в самой команде экспорта.
Если вы собираетесь использовать пробелы в значении, вам нужно использовать двойные кавычки при создании переменной среды, как показано ниже:
Доступ к значениям переменных среды можно получить с помощью команды echo, за которой следует имя соответствующей переменной со знаком доллара.
Вы также можете использовать команду printenv для получения значения любой переменной среды.
Проблемы, связанные с переменными среды
При определении переменных среды в bash-скриптах общие проблемы связаны с отношением «родитель-потомок» оболочек. Решением таких проблем является определение переменных в родительской среде. Как мы видели ранее, как правило, переменные среды являются временными и эксклюзивными для экземпляра оболочки, в котором они созданы; однако мы также можем определить переменные среды, которые будут постоянными и доступными для других пользователей.
Если вы хотите создать постоянную переменную среды только для вашего использования, вам придется отредактировать файл .bashrc. Он находится в каталоге /home/user. Вы можете добавить переменную среды VAR в файл .bashrc, выполнив следующие команды:
Теперь мы используем текстовый редактор nano, чтобы изменить содержимое файла bash.
Чтобы применить изменения к текущему сеансу, создайте файл .bashrc с помощью следующей команды:
Переменная VAR будет доступна для каждого экземпляра оболочки, запущенного текущим пользователем.
Однако, если вы хотите создать переменную среды, доступную для всех пользователей, вам придется включить ее в файл /etc/environment. Например, мы можем добавить ГЛОБАЛЬНУЮ переменную среды в файл /etc/environment, выполнив следующие команды:
Как и раньше с файлом .bashrc, теперь мы редактируем содержимое файла среды.
Загрузите файл среды, чтобы применить изменения, введя следующую команду:
Если вы хотите создать переменную среды, в которой хранится результат команды, выполненной в сценарии bash, вам придется использовать подстановку параметров. Общий формат подстановки параметров включает использование команды экспорта, за которой следует команда со знаком доллара, заключенным в скобки, как показано ниже:
Например, если вы хотите сохранить переменную среды SHELL в другой переменной MYSHELL, вы можете использовать следующую команду:
Заключение
В этой статье мы рассмотрели основы сценариев bash и переменных среды. Кроме того, мы поняли, как манипулировать переменными среды, некоторые типичные проблемы, связанные с созданием таких переменных в bash-скриптах, и как их исправить.