Жизнь — это внимание, ощущение и внутренние перемены (Авессалом Подводный).

Команда source в Bash

2 мин для чтения
FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
29 июня 2019
Bash Heredoc
Команда source читает и выполняет команды из файла, указанного в качестве аргумента в текущей среде оболочки. Полезно загружать функции, переменные и файлы конфигурации в сценарии оболочки.

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

 

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

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

 

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

 

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

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

functions.sh
check_root () {
  if [[ $EUID -ne 0 ]]; then
    echo "Этот сценарий должен выполняться от имени root" 
    exit 1
  fi
}

 

Теперь в каждом из ваших сценариев, которые должны запускаться только пользователем root, просто создайте файл functions.sh и вызовите функцию:

#!/usr/bin/env bash

source functions.sh
check_root

echo "я root"

 

Если вы запустите приведенный выше сценарий как пользователь без полномочий root, он напечатает «Этот сценарий должен быть запущен от имени пользователя root» и завершится.

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

 

С помощью команды source вы также можете читать переменные из файла. Переменные должны быть установлены с использованием синтаксиса VARIABLE=VALUE в Bash.

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

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

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Если статья понравилась, то поделитесь ей в социальных сетях:

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить
galka

Спасибо! Ваша заявка принята

close
galka

Спасибо! Ваша заявка принята

close