Введение
source
команда считывает и выполняет команды из файла, указанного в качестве аргумента в текущей среде оболочки. Полезно загружать функции, переменные и файлы конфигурации в сценарии оболочки.
source
— это оболочка, интегрированная в Bash и другие популярные оболочки, используемые в операционных системах Linux и UNIX. Его поведение может незначительно отличаться от оболочки к оболочке.
Синтаксис исходной команды
Синтаксис source
команды следующий:
source FILENAME [ARGUMENTS]. FILENAME [ARGUMENTS]
source
и.
(точка) — это одна и та же команда.- Если
FILENAME
не является полным путем к файлу, команда будет искать файл в каталогах, указанных в переменной окружения$PATH
. Если файл не найден в команде$PATH
, он будет искать файл в текущем каталоге. - Если
ARGUMENTS
, они станут позиционными параметрами дляFILENAME
. - Если
FILENAME
существует,source
команда возвращает0
, в противном случае, если файл не найден, возвращается1
.
Пример исходной команды
В этом разделе мы увидим несколько основных примеров использования source
команды.
Если у вас есть сценарии оболочки, использующие те же функции, вы можете извлечь их в отдельный файл, а затем добавить этот файл в свои сценарии.
В этом примере мы создадим файл, который включает в себя функцию bash, которая проверяет, является ли пользователь, запускающий скрипт, root, и, если нет, отображает сообщение и закрывает скрипт.
sudo nano functions.sh
Вставьте следующий код:
check_root () {
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root"
exit 1
fi
}
Теперь в каждом из ваших сценариев, которые должны запускаться только пользователем root, выполните исходную команду файла functions.sh
и вызовите функцию:
#!/usr/bin/env bash
source functions.sh
check_root
echo "I am root"
Если вы запустите приведенный выше сценарий от имени пользователя без полномочий root, сценарий напечатает « Этот сценарий должен быть запущен от имени пользователя root » и завершится.
Преимущество этого подхода заключается в том, что ваши скрипты будут меньше и читабельнее, вы сможете повторно использовать один и тот же файл функции столько раз, сколько потребуется, а в случае, если вам нужно изменить функцию, вы будете изменять только один файл.
Конфигурационный файл Bash.
С помощью команды source
вы также можете читать переменные из файла. Переменные должны быть установлены с использованием синтаксиса Bash, VARIABLE=VALUE
.
Создадим тестовый файл конфигурации:
sudo nano config.sh
Вставьте следующий код:
VAR1="foo"
VAR2="bar"
В вашем скрипте bash используйте команду source
для чтения файла конфигурации:
#!/usr/bin/env bash
source config.sh
echo "VAR1 is $VAR1"
echo "VAR2 is $VAR2"
Если вы запустите скрипт, вывод будет выглядеть так:
VAR1 is foo
VAR2 is bar
Вывод
В этом руководстве вы узнали, как использовать команду source
, встроенную в сценарии оболочки.