source — это удобная встроенная команда оболочки, которая принимает аргументы, анализирует команды в сценарии и выполняет их в среде оболочки. Содержимое файла считывается источником, а затем передается интерпретатору языка команд инструментов (TCL), который выполняет команды.
Давайте узнаем, как использовать исходный код для выполнения команд и работы со средами оболочки в Linux, а также кратко объясним, чем он отличается от команды bash.
Использовать источник для выполнения команд в файле
Чтобы использовать исходную команду, вам сначала нужно создать образец файла и заполнить его некоторыми командами оболочки. Начните с создания нового файла с сенсорная команда. Откройте файл в текстовом редакторе по вашему выбору и напишите несколько основных команд оболочки.
трогатьтест.текст
витест.текст# Запишите команды в текстовый файл:
эхо "Привет!"
pwd
лс
# Исходный файл либо с исходным кодом, либо с точечным синтаксисом
. тест.текст
источниктекст.текст
Запишите текстовый файл и перейдите к его передаче в качестве аргумента исходной команде. Система выполнит команды в файле и вернет вывод.
Теперь, когда вы знаете основы использования исходного кода, давайте попробуем изменить среду оболочки Bash. Однако, прежде чем продолжить, вы должны иметь базовое представление о переменные окружения в линукс.
Используйте исходную команду для обновления среды оболочки Bash.
В Linux переменные среды наследуются, но неизменяемы. Если вы выполняете сценарий оболочки Bash, который изменяет переменную окружения $TEST, сценарий создаст новый, разветвленный процесс оболочки, и в нем будет происходить модификация $TEST вместо оригинального Bash среда.
Дочерний процесс не сможет изменить среду родительского процесса. Он может изменять только свою среду. Давайте разберемся с этим на практическом примере:
экспорт ТЕСТ="деб"
ви пример# Введите эти команды в файл
экспорт ТЕСТ="кровать"
эхо $ТЕСТ
# Записать файл, сделать его исполняемым, а затем выполнить
chmod +x пример
./пример # это вернет "кровать"
эхо $ТЕСТ # это вернет "deb"
Вот где исходная команда вступает в игру. С помощью исходной команды вы можете выполнить сценарий в той же среде оболочки, которая в противном случае была бы разветвлена. Таким образом, если вы используете сценарий, который изменяет переменные среды, он внесет изменения в среду оболочки Bash.
Чтобы проверить это, напишите команды в поле кода выше в новом файле и используйте исходную команду вместо того, чтобы делать ее исполняемой.
# Создаем новый файл и редактируем его
ви тест файл
. test_file
эхо $ТЕСТ # Это вернет "кровать"
Как видите, с помощью команды source вы смогли обновить переменные окружения родительского процесса. Это основной вариант использования исходной команды, т. е. изменение родительской среды.
Это все шаги, необходимые для обновления среды оболочки Bash с помощью исходной команды.
Разница между командами Linux bash и source
Разница между командами Linux bash и source заключается в том, что когда вы выполняете скрипт с помощью команды bash, она сообщает Linux ядро для создания нового процесса Bash для чтения и выполнения сценария, копирования вывода в исходный процесс оболочки и отображения его.
Но исходная команда встроенная оболочка который читает и оценивает файл в текущем процессе оболочки. Таким образом, все изменения, сделанные скриптом, будут сохранены в оболочке Bash.
Устранение ошибок исходной команды
В некоторых системах Linux вы можете столкнуться с ошибкой «источник не найден» при попытке использовать команду источника. Вы можете исправить эту ошибку двумя способами:
1. Изменить оболочку
Некоторые оболочки не поддерживают исходную команду. В этом случае вам нужно изменить среду оболочки с помощью chsh -s ($ имя_какой оболочки) команда.
Запустите новый терминал после смена оболочкии попробуйте использовать исходную команду. Если новая оболочка поддерживает сорсинг, то она должна работать безупречно.
2. Используйте синтаксис точки/точки
Некоторые среды оболочки не поддерживают "источник"синтаксис, но альтернатива"."синтаксис. Синтаксис «исходный» является синонимом точки в Bash. Но это не работает в оболочке POSIX, поэтому для максимальной совместимости используйте синтаксис точки.
Основные команды Linux, которые вы должны знать
Команды оболочки Linux — отличный способ взаимодействия с системой с помощью терминала. Они являются самой сутью использования систем *NIX.
Хотя вам не нужно знать все команды, знакомство с несколькими полезными, несомненно, окажется полезным, когда вы углубитесь в мир Linux.