Linux bash source command

Команда Source в Bash

Bash Source Command

Команда source читает и выполняет команды из файла, указанного в качестве аргумента в текущей среде оболочки. Полезно загружать функции, переменные и файлы конфигурации в сценарии оболочки.

source это оболочка, встроенная в Bash и другие популярные оболочки, используемые в операционных системах Linux и UNIX. Его поведение может немного отличаться от оболочки к оболочке.

Синтаксис исходной команды

Синтаксис source команды следующий:

  • source и . (точка) — это одна и та же команда.
  • Если FILENAME путь к файлу не полный, команда выполнит поиск файла в каталогах, указанных в $PATH переменной среды . Если файл не найден в $PATH команде, будет выполнен поиск файла в текущем каталоге.
  • Если ARGUMENTS они заданы, они станут позиционными параметрами для FILENAME .
  • Если FILENAME существует source код завершения команды 0 , в противном случае, если файл не найден, он вернется 1 .

Примеры исходных команд

В этом разделе мы рассмотрим некоторые основные примеры использования source команды.

Функции поиска

Если у вас есть сценарии оболочки, использующие те же функции, вы можете извлечь их в отдельный файл, а затем получить этот файл в своих файлах.

В этом примере мы создадим файл, который включает в себя функцию bash, которая проверяет, является ли пользователь, выполняющий сценарий, пользователем root, и, если нет, показывает сообщение и завершает работу сценария.

Преимущество этого подхода состоит в том, что ваши скрипты будут меньше и более читабельными, вы можете повторно использовать один и тот же файл функций при необходимости, и в случае, если вам нужно изменить функцию, вы отредактируете только один файл.

Конфигурационный файл Bash

С помощью source команды вы также можете читать переменные из файла. Переменные должны быть установлены с использованием синтаксиса Bash VARIABLE=VALUE .

Давайте создадим тестовый файл конфигурации:

В вашем bash-скрипте используйте source команду для чтения файла конфигурации:

Если вы запустите скрипт, результат будет выглядеть так:

Вывод

Из этого руководства вы узнали, как использовать source встроенную команду в сценариях оболочки.

Источник

Команда source в Bash

source команда считывает и выполняет команды из файла, указанного в качестве аргумента в текущей среде оболочки. Полезно загружать функции, переменные и файлы конфигурации в сценарии оболочки.

source — это оболочка, встроенная в Bash и другие популярные оболочки, используемые в операционных системах Linux и UNIX. Его поведение может немного отличаться от оболочки к оболочке.

Синтаксис команды source

Синтаксис source команды следующий:

  • source и . (точка) — это та же команда.
  • Если FILENAME не является полным путем к файлу, команда будет искать файл в каталогах, указанных в $PATH среды $PATH . Если файл не найден в $PATH , команда будет искать файл в текущем каталоге.
  • Если заданы какие-либо ARGUMENTS , они станут позиционными параметрами для FILENAME .
  • Если FILENAME существует, source выхода source команды равен 0 , в противном случае, если файл не найден, он вернет 1 .
Читайте также:  Bomberman для windows 10

Примеры команды source

В этом разделе мы рассмотрим несколько основных примеров использования source команды.

Функции поиска

Если у вас есть сценарии оболочки, использующие те же функции, вы можете извлечь их в отдельный файл, а затем указать этот файл в своих сценариях.

В этом примере мы создадим файл, который включает функцию bash, которая проверяет, является ли пользователь, запускающий скрипт, корневым, и если нет, он показывает сообщение и завершает скрипт.

Теперь в каждом скрипте, который должен запускаться только пользователем root, просто укажите файл functions.sh и вызовите функцию:

Если вы запустите приведенный выше сценарий как пользователь без полномочий root, он напечатает «Этот сценарий должен быть запущен от имени пользователя root» и завершится.

Преимущество этого подхода заключается в том, что ваши сценарии будут меньше и более читабельны, вы можете повторно использовать один и тот же файл функции, когда это необходимо, а в случае, если вам нужно изменить функцию, вы отредактируете только один файл.

Файл конфигурации Bash

С помощью source команды вы также можете читать переменные из файла. Переменные должны быть установлены с использованием синтаксиса Bash, VARIABLE=VALUE .

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

В вашем сценарии bash используйте команду source для чтения файла конфигурации:

Если вы запустите сценарий, результат будет выглядеть так:

Выводы

В этом руководстве вы узнали, как использовать встроенную команду source в сценариях оболочки.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Источник

Source command

  • The source command can be used to load any functions file into the current shell script or a command prompt.
  • It read and execute commands from given FILENAME and return.
  • The pathnames in $PATH are used to find the directory containing FILENAME. If any ARGUMENTS are supplied, they become the positional parameters when FILENAME is executed.

Contents

Syntax

Example

Create a shell script called mylib.sh as follows:

Save and close the file. You can now call and use function is_root() from mylib.sh using the following syntax in your script called test.sh:

Save and close the file. Run it as follows:

Our previous example can be updated using source command as follows:

A Note About Exit Status

This command returns the status of the last command executed in FILENAME; fails if FILENAME cannot be read. In this example, /etc/init.d/function exists and source using the following command:

The exit status 0 indicate that source commanded successfully read /etc/init.d/function file. In this example, /etc/init.d/foo does not exists and source using the following command:

The exit status 1 indicate that source commanded failed to read /etc/init.d/foo file.

Working with internal command

The source command is the reliable way when you need to run internal commands in your shell script. Here is how to use the cd command in bash scripts that change the current script’s directory as per script in the current shell.

Problematic code

Try the following example:

Читайте также:  Windows жесткий диск проверить smart жесткого диска

Solution

So running a shell script executes in its independent process. In other words, you are running the above script in a subshell. To fix this and run the script in the current shell so that the cd command works and you will be in the /etc/ folder when the script finished executing:

Источник

Команда source в Bash

source это оболочка, встроенная в Bash и другие популярные оболочки, используемые в операционных системах Linux и UNIX. Его поведение может немного отличаться от оболочки к оболочке.

Синтаксис исходной команды

Синтаксис команды source следующий:

  • source и .(точка) – это одна и та же команда.
  • Если FILENAME путь к файлу не полный, команда выполнит поиск файла в каталогах, указанных в переменной среды $PATH. Если файл не найден в команде $PATH, будет выполнен поиск файла в текущем каталоге.
  • Если ARGUMENTS они заданы, они станут позиционными параметрами для FILENAME.
  • Если FILENAME существует sourceкод завершения команды 0, в противном случае, если файл не найден, он вернется 1.

Примеры команды source

В этом разделе мы рассмотрим некоторые основные примеры использования команды source.

Функции поиска

Если у вас есть сценарии оболочки, использующие те же функции, вы можете извлечь их в отдельный файл, а затем получить этот файл в своих файлах.

В этом примере мы создадим файл, который включает в себя функцию bash, которая проверяет, является ли пользователь, выполняющий скрипт, пользователем root, и, если нет, показывает сообщение и завершает работу скрипта.

Теперь в каждом из ваших сценариев, которые должны запускаться только пользователем root, просто создайте файл functions.sh и вызовите функцию:

Если вы запустите приведенный выше сценарий как пользователь без полномочий root, он напечатает «Этот сценарий должен быть запущен от имени пользователя root» и завершится.

Преимущество этого подхода состоит в том, что ваши скрипты будут меньше и более читабельны, вы можете повторно использовать один и тот же файл функций при необходимости, и если вам нужно изменить функцию, вы отредактируете только один файл.

Конфигурационный файл Bash

С помощью команды source вы также можете читать переменные из файла. Переменные должны быть установлены с использованием синтаксиса VARIABLE=VALUE в Bash.

Давайте создадим тестовый файл конфигурации:

В вашем bash-скрипте используйте команду source для чтения файла конфигурации:

Если вы запустите скрипт, результат будет выглядеть так:

Заключение

Из этой статьи вы узнали, как использовать sourceвстроенную команду в сценариях оболочки.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Bash source builtin command

On Unix-like operating systems, source is a builtin command of the Bash shell. It takes a file name, and executes the commands in that file as if they had been typed on the command line.

Description

source reads and executes commands from file filename in the current shell. If filename does not contain a slash, directories in PATH are searched for filename.

When bash is not running in POSIX mode (e.g., set -o posix), the current directory is searched if filename is not found in $PATH.

If any arguments are supplied, they become the positional parameters when filename is executed.

Читайте также:  Удаление драйверов nvidia linux debian

Using source to execute the commands in a file is not the same as running a script. For one thing, the file does not need to be executable (e.g., with chmod u+x). For another, the commands will execute in the current shell environment; for example, any variables set will retain their value after the source is finished executing.

A common use of source is to load and execute the contents of a configuration file, such as $HOME/.bashrc. The .bashrc file is often executed automatically when you create a new bash shell. If you make changes to this file, and want to apply them to your current bash session, you can do so with source. See the examples below.

The builtin command . (a single period) performs the same action as the source command. The two can be used interchangeably.

Syntax

You can also use a single dot (period), which is the same as the word source. For example:

Exit status

The exit status of source is the exit status of the last command executed, or zero if no commands are executed. If filename is not found, or cannot be read, the return status is non-zero.

Examples

Read the file .bashrc in the home directory, and execute any commands in that file.

Same as the above command.

The next examples will illustrate how source executes in the current shell context:

Use the printf builtin command to print text, redirecting it into a new file named mysource. The printf command is used instead of echo because it’s a more reliable way to print escaped characters, such as \n, which interprets as a newline. The entire string is enclosed in single quotes (), rather than double-quotes, so that bash does not expand the exclamation point as a history expansion.

Verify the text of mysource using cat:

These commands set the variable myvar and then echo the value. Make mysource executable:

Then, run the script. Unless the current directory is in your PATH environment variable, you need to specify the path name ./ (the current directory) as part of the command:

The script mysource is executed in its own shell environment, where the variable myvar has a value («Hello, World!«). After the script terminates, however, myvar no longer has a value. You can verify this by running echo $myvar at the bash prompt:

(Only a newline is printed, because myvar has no value.)

Now, instead of running the script directly, execute it with source. The value of myvar is echoed, as before:

This time, however, myvar still has a value in the current environment:

As you can see, running a script creates an isolated shell environment, which is destroyed when the script terminates. In contrast, using source allows the contents of the script to affect the current environment. Being aware of the difference help you better understand the behavior of your scripts, and how they can affect the environment of other scripts and programs you run in bash.

exec — Destroy the current shell and replace it with a new process.

Источник

Оцените статью