Source в Linux: Как заставить скрипты работать на вас

Source в Linux: Как заставить скрипты работать на вас

Вы когда-нибудь запускали скрипт, который должен был изменить переменные, а в результате ничего не происходило? Знакомое чувство разочарования? Всё дело в том, как работает командная оболочка Linux по умолчанию.

Она запускает каждый скрипт в своём «пузыре» — изолированном процессе. И когда скрипт завершается, этот «пузырь» лопается, забирая с собой все созданные переменные и функции. Ваши изменения просто исчезают в никуда.

Но есть способ это обойти. Команда `source` — это ваш ключ к мощному взаимодействию со скриптами. Она ломает стандартное поведение, выполняя код прямо в текущей оболочке.

Представьте: вы создали скрипт для настройки рабочего окружения. Обычно, запустив его, вы не увидите никаких изменений в своём терминале. Но с `source` всё иначе. Все переменные и функции, объявленные в скрипте, останутся с вами после его выполнения.

Вы узнаете простой синтаксис этой команды и поймёте, как передавать параметры прямо в скрипт. Мы разберём наглядные примеры: от загрузки переменных из файла до объявления функций, которые становятся доступны в командной строке.

Откроем секрет: точку (.) можно использовать как короткий синоним для `source`, но здесь есть важный нюанс с пробелами, о котором нельзя забывать.

Эта команда — не просто ещё одна утилита в вашем арсенале. Именно она лежит в основе работы виртуальных окружений Python и многих других системных инструментов. Готовы перестать бороться с оболочкой и начать управлять ей? Всё, что нужно знать, ждёт вас в полной статье.


Командная оболочка играет очень важную роль в работе семейства операционных систем Linux. Она используется не только пользователями  для работы в терминале, но и программами, а также компонентами операционной системы для обмена данными между собой. Для этого применяются переменные окружения. Для перезагрузки переменных окружения из файла часто используется команда source.

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

Команда source linux

Синтаксис команды очень прост. Надо вызвать саму команду и передать ей путь к исполняемому файлу:

$ source путь_к_файлу аргументы

Никаких опций более не нужно. Если указан не абсолютный путь к файлу, а просто имя файла, то утилита будет искать исполняемый файл в текущей папке и директориях, указанных в переменной PATH. Давайте разберём несколько примеров работы с утилитой. Создаём скрипт, объявляющий переменную:

vi losstsource

WEBSITE=losst

Затем загрузим переменную из этого файла:

source losstsource

Теперь можно попытаться вывести содержимое переменной и убедиться, что всё работает:

echo $WEBSITE

Source в Linux: Как заставить скрипты работать на вас

Однако, переменная есть только в текущем командном интерпретаторе, в других командных интерпретаторах её нет. Это отличие команды source от команды export, позволяющей экспортировать переменные окружения глобально.

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

vi losstsource

WEBSITE=$1

И снова выполняем:

source losstsource losst.pro

Source в Linux: Как заставить скрипты работать на вас

Аналогично работают и функции. Если объявить функцию в скрипте bash, а затем выполнить его с помощью команды source linux, то функция станет доступна в интерпретаторе:

vi testsource

#!/bin/bash
print_site(){
echo "losst.pro"
}

Теперь можно выполнить функцию print_site в терминале или любом другом скрипте:

print_site

Source в Linux: Как заставить скрипты работать на вас

Для тех, кто знаком с программированием на языке Си, можно провести аналогию с директивой #include, делающей доступными в текущем файле функции из других файлов. Если файл, имя которого передано как параметр команде, не существует, она вернёт код возврата 1 и завершится:

source losstanything

Source в Linux: Как заставить скрипты работать на вас

Вместо команды source можно использовать точку (.), однако здесь следует быть осторожными — между точкой и именем файла должен быть пробел для того, чтобы bash интерпретировал эту точку как отдельную команду, а не как часть имени файла:

. losstsource

Source в Linux: Как заставить скрипты работать на вас

Однако, нельзя писать .losstsource или ./losstsource, потому что обозначение ./ — это уже отсылка на текущую директорию, скрипт будет выполнен как обычно.

Выводы

В этой небольшой статье мы рассмотрели работу с командой source linux. Как видите, это очень простая и в то же время полезная команда, очень сильно облегчающая работу в терминале. Именно с её помощью работают виртуальные окружения Python и многие другие подсистемы.

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


Кликните на изображение чтобы обновить код, если он неразборчив