Создание и выполнение простого скрипта с использованием команды 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
.