
Команда source считывает и выполняет команды из файла, указанного в качестве аргумента, в текущей среде оболочки. Она полезна для загрузки функций, переменных и файлов конфигурации в скрипты оболочки.
source — это оболочка, встроенная в Bash и другие популярные оболочки, используемые в операционных системах Linux и UNIX. Её поведение может немного различаться в зависимости от оболочки.
Исходный синтаксис команды
Синтаксис source команды следующий:
source FILENAME [ ARGUMENTS ] . FILENAME [ ARGUMENTS ]
-
sourceи.(точка) — это одна и та же команда. - Если
FILENAMEне является полным путём к файлу, команда будет искать файл в каталогах, указанных в переменной окружения$PATH. Если файл не найден в$PATH, команда будет искать его в текущем каталоге. - Если указаны какие-либо
ARGUMENTS, они станут позиционными параметрамиFILENAME. - Если
FILENAMEсуществует, код выходаsourceкоманды —0, в противном случае, если файл не найден, будет возвращен1.
Примеры исходных команд
В этом разделе мы рассмотрим несколько основных примеров использования команды source .
Функции снабжения
Если у вас есть скрипты оболочки, использующие те же функции, вы можете извлечь их в отдельный файл, а затем использовать этот файл в своих скриптах.
В этом примере мы создадим файл, включающий функцию bash , которая проверяет, является ли пользователь, запускающий скрипт, пользователем root, и если нет, выводит сообщение и завершает работу скрипта.
функции.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 .
Давайте создадим тестовый файл конфигурации:
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 в своих скриптах оболочки.
Если у вас есть вопросы или пожелания, не стесняйтесь оставлять комментарии.
Связанные руководства