Bash Shell: «Exec», «Eval», «Source» — в чем разница
Среди многих особенностей сценариев Bash есть команды exec, eval и source, которые можно использовать для выполнения команд, запуска сценариев и установки переменных среды. В этой статье мы обсудим каждую из этих команд и то, как их можно использовать в сценариях bash.
exec в сценариях Bash
Эта команда заменяет текущий запущенный процесс новым процессом, поскольку ее можно использовать для запуска новой команды в той же оболочке или для замены текущей оболочки новой. Например, чтобы заменить текущую оболочку новой оболочкой bash, вы можете использовать команду exec bash. Это создаст новую оболочку с той же средой, что и текущая оболочка, но любые изменения, сделанные в новой оболочке, не будут видны в старой оболочке.
Вот пример кода сценария bash, который использует эту команду exec:
echo "Starting script..."
ls -l
echo "Script completed."
Команда exec используется для замены текущего процесса оболочки указанной командой или сценарием, поэтому в этом примере сценарий печатает сообщение с помощью команды echo, а затем выполняет команду ls -l с помощью exec. Поскольку exec заменяет текущий процесс на ls -l, следующая команда echo никогда не выполняется.
eval в сценариях Bash
Команда eval используется для оценки команды, которая хранится в строковой переменной, поскольку это полезно, когда вам нужно динамически сгенерировать команду на основе пользовательского ввода или других переменных. Например, если у вас есть переменная cmd, содержащая команду, вы можете использовать команду eval $cmd для выполнения команды, хранящейся в переменной cmd.
Вот пример кода bash, который использует эту команду exec:
# Example of eval command
cmd="echo Hello, world!"
eval $cmd
Команда eval используется для выполнения команды оболочки, которая создается динамически во время выполнения, поэтому в этом примере для переменной cmd задана строка «echo Hello, world!». Затем команда eval используется для выполнения содержимого cmd, которое печатает сообщение «Hello, world!» к консоли.
источник в сценариях Bash
Команда source используется для выполнения команд, хранящихся в файле, и полезна, когда у вас есть сценарий, который устанавливает переменные среды или определяет функции, которые вы хотите использовать в текущей оболочке. Например, если у вас есть сценарий my_script.sh, который устанавливает переменные среды, вы можете использовать источник команды my_script.sh для выполнения сценария и установки переменных среды в вашей текущей оболочке.
Вот пример кода bash, выполняющего сценарий оболочки внутри сценария с использованием исходной команды:
# Example of source command
source ./bashfile2.sh
Исходная команда используется для выполнения команд в указанном скрипте в текущей среде оболочки, поэтому в этом примере скрипт my_script.sh выполняется с использованием исходного кода. Команды в bashfile2.sh выполняются в текущей среде оболочки, что может быть полезно для установки переменных среды или определения функций, которые будут использоваться.
Заключение
Bash предоставляет мощные команды, такие как exec, eval и source, которые можно использовать для управления системами Linux. Команда exec используется для замены текущего процесса новым, команда eval используется для оценки команды, хранящейся в переменной, а команда source используется для выполнения команд, хранящихся в файле. Эти команды могут быть очень полезны в задачах сценариев и автоматизации и могут помочь вам более эффективно работать в оболочке bash.