Гид по технологиям

Команда source в Linux: как использовать и отличия от bash

4 min read Linux Обновлено 17 Dec 2025
Команда source в Linux: как использовать
Команда source в Linux: как использовать

Команда neofetch в Linux

Что делает source — кратко

source — это встроенная команда оболочки (shell builtin), которая читает и выполняет команды из указанного файла в контексте текущей оболочки. Простая формула:

  • Читает содержимое файла как набор команд оболочки.
  • Выполняет их в текущем процессе оболочки (без fork).
  • Все изменения окружения (export, unset, определение функций) применяются к текущей сессии.

Определение: «встроенная команда» — команда, реализованная самой оболочкой, а не отдельной программой в /bin.

Пример: выполнить команды из файла

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

# Создаём файл и редактируем его
touch test.txt
vi test.txt

# Внутри test.txt напишите:
echo "Hello!"
pwd
ls

# Сохраняем файл и выполняем его в текущей оболочке
source test.txt
# или эквивалентно
. test.txt

После выполнения вы увидите вывод команд (Hello!, текущая директория, список файлов). На изображении ниже показан пример вывода при ‘sourcing’ файла.

Вывод при выполнении файла через source

Как source влияет на переменные окружения

По умолчанию дочерний процесс не может изменить окружение родителя. Пример без source:

export TEST="deb"
vi example

# Внутри example напишите:
export TEST="bed"
echo $TEST

# Сохраняем, делаем исполняемым и запускаем
chmod +x example
./example    # выведет: bed
echo $TEST   # в родительской оболочке: deb

Тот же файл, выполненный через source, изменит переменную в текущей оболочке:

# Создаём файл test_file с тем же содержимым
vi test_file
# Внутри test_file:
export TEST="bed"
echo $TEST

# Выполняем через source
. test_file   # или: source test_file
echo $TEST    # теперь выведет: bed

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

Использование source для обновления переменных окружения

Разница между bash и source

Что делаетbash