Команда source в Bash

source команда считывает и выполняет команды из файла, указанного в качестве аргумента в текущей среде оболочки. Полезно загружать функции, переменные и файлы конфигурации в сценарии оболочки.

source — это оболочка, встроенная в Bash и другие популярные оболочки, используемые в операционных системах Linux и UNIX. Его поведение может немного отличаться от оболочки к оболочке.

Синтаксис команды source

Синтаксис source команды следующий:

source FILENAME [ARGUMENTS]
. FILENAME [ARGUMENTS]
  • source и . (точка) — это та же команда.
  • Если FILENAME не является полным путем к файлу, команда будет искать файл в каталогах, указанных в $PATH среды $PATH . Если файл не найден в $PATH , команда будет искать файл в текущем каталоге.
  • Если заданы какие-либо ARGUMENTS , они станут позиционными параметрами для FILENAME .
  • Если FILENAME существует, source выхода source команды равен 0 , в противном случае, если файл не найден, он вернет 1 .

Примеры команды source

В этом разделе мы рассмотрим несколько основных примеров использования source команды.

Функции поиска

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

В этом примере мы создадим файл, который включает функцию bash, которая проверяет, является ли пользователь, запускающий скрипт, корневым, и если нет, он показывает сообщение и завершает скрипт.

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 .

Создадим тестовый файл конфигурации:

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 в сценариях оболочки.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Оставьте комментарий