Создание и выполнение простого скрипта с использованием команды source
На этом этапе мы создадим простой файл скрипта и используем команду source для его выполнения в текущей среде оболочки. Это поможет нам понять, в чем разница между использованием команды source и обычного выполнения скрипта.
Когда вы запускаете скрипт обычным способом (с помощью команды ./script.sh), оболочка создает новый подпроцесс для выполнения скрипта. Любые переменные или функции, определенные в этом скрипте, существуют только в рамках этого подпроцесса и исчезают после завершения выполнения скрипта. Однако, когда вы используете команду source (или ее сокращенную форму .), команды в скрипте выполняются в текущей среде оболочки, что позволяет переменным и функциям сохранять свои значения после завершения выполнения скрипта.
Давайте создадим простой скрипт, чтобы продемонстрировать этот концепт:
1. Перейдите в директорию проекта
Сначала убедитесь, что вы находитесь в правильной директории:
cd ~/project
2. Создайте простой файл скрипта
Создайте новый файл с именем variables.sh с помощью редактора nano:
nano variables.sh
Добавьте следующее содержимое в файл:
#!/bin/bash
## Этот скрипт устанавливает переменную окружения
export WEATHER="Sunny"
echo "The weather is now set to: $WEATHER"
Нажмите Ctrl+O, чтобы сохранить файл, затем Enter, чтобы подтвердить имя файла, и, наконец, Ctrl+X, чтобы выйти из nano.
3. Сделайте скрипт исполняемым
Перед тем, как мы сможем запустить скрипт, нам нужно сделать его исполняемым:
chmod +x variables.sh
4. Запустите скрипт обычным способом
Сначала давайте запустим скрипт традиционным способом:
./variables.sh
Вы должны увидеть вывод, похожий на следующий:
The weather is now set to: Sunny
Теперь проверьте, существует ли переменная WEATHER в текущей оболочке:
echo $WEATHER
Вероятно, вы не увидите никакого вывода или увидите пустую строку. Это происходит потому, что переменная была установлена только в подпроцессе, который выполнял скрипт, а не в текущей оболочке.
5. Выполните скрипт с использованием команды source
Теперь давайте используем команду source для запуска скрипта:
source variables.sh
Вы увидите такой же вывод:
The weather is now set to: Sunny
Проверьте переменную WEATHER еще раз:
echo $WEATHER
На этот раз вы должны увидеть:
Sunny
Переменная WEATHER теперь существует в текущей оболочке, потому что вы использовали команду source для выполнения скрипта.
6. Использование сокращенной записи
Вы также можете использовать сокращенную запись с точкой (.) для команды source:
. variables.sh
Это даст такой же результат, как и использование команды source variables.sh.