Source команда в линукс

What does the command ‘source’ do?

I commonly use it to save any changed on my dotfiles, but what does it exactly do? Why there is not documentation about it?

Since source is a bash builtin, it doesn’t have its own separate man page but you can get online help with either man bash or, more directly, help source .

1 Answer 1

source is a bash shell built-in command that executes the content of the file passed as an argument, in the current shell. It has a synonym in . (period).

. filename [arguments] source filename [arguments] 
source filename [arguments] Read and execute commands from filename in the current shell environment and return the exit status of the last command executed from filename. If filename does not contain a slash, file names in PATH are used to find the directory containing filename. The file searched for in PATH need not be executable. When bash is not in posix mode, the current directory is searched if no file is found in PATH. If the sourcepath option to the short builtin command is turned off, the PATH is not searched. If any arguments are supplied, they become the positional parameters when filename is executed. Otherwise the positional parameters are unchanged. The return status is the status of the last command exited within the script (0 if no commands are executed), and false if filename is not found or cannot be read. 

Be careful! ./ and source are not quite the same.

  • ./script runs the script as an executable file, launching a new shell to run it
  • source script reads and executes commands from filename in the current shell environment

Note: ./script is not . script , but . script == source script

Источник

Команда source в Bash

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

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

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

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

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

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

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

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

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

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

check_root ()  if [[ $EUID -ne 0 ]]; then echo "This script must be run as root" exit 1 fi > 

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

#!/usr/bin/env bash source functions.sh check_root echo "I am root" 

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

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

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

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

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

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

#!/usr/bin/env bash source config.sh echo "VAR1 is $VAR1" echo "VAR2 is $VAR2" 

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

Выводы

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

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

Источник

Команда source в Linux

В Linux команда source — встроенная команда оболочки, которая считывает и выполняет содержимое файла в текущей оболочке.

Использование команды source в Linux

Считываемые файлы обычно содержат список команд, переданных интерпретатору для чтения и выполнения.

Исходная команда не имеет параметров, и аргументом является только файл.

Синтаксис

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

  • читает и выполняет команды из указанного файла в текущем командном процессоре;
  • файл ищется в каталогах, указанных в переменной $PATH;
  • если указаны аргументы, они становятся позиционными параметрами при выполнении файла.
  • возвращает состояние последней выполненной команды из файла;
  • возвращает ошибку, если файл не удаётся прочитать.

Примеры использования команды source в Linux

Передаём файлу example.txt , находящемуся в домашнем каталоге, в качестве аргумента список команд. Каждая команда будет выполняться построчно.

Содержимое файла example.txt :

oleg@mobile:~:$ cat example.txt ls date time

Результат выполнения команды source :

oleg@mobile:~:$ source example.txt abc.txt backgrounds/ Desktop/ Documents/ mailbox/ skype-export/ tmp/ wifi/ Yandex.Disk/ Apps/ bin/ Directory/ Downloads/ photo/ slimthemes/ webprojects/ www/ Документы/ aur/ build/ docs/ example.txt recode/ store/ webupload/ xep/ Загрузки/ Вт 20 сен 2022 14:45:09 EEST real 0m0,000s user 0m0,000s sys 0m0,000s oleg@mobile:~:$ 

Немного усложняем задачу, изменив содержимое файла на следующее:

oleg@mobile:~:$ cat example.txt echo "Текущий каталог:" pwd echo "Сегодняшняя дата и время:" date

Получаем следующий результат:

oleg@mobile:~:$ source example.txt Текущий каталог: /home/oleg Сегодняшняя дата и время: Вт 20 сен 2022 14:53:17 EEST oleg@mobile:~:$ 

Вывод

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

Источник

Linux Source Command with Examples

In Linux systems, source is a built-in shell command that reads and executes the file content in the current shell. These files usually contain a list of commands delivered to the TCL interpreter to be read and run.

This tutorial will explain how the source command works and when to use it.

Linux source command with examples

  • A system running a Linux distribution (learn how to install Ubuntu 20.04, how to install CentOS 7, or how to install Arch Linux)
  • An account with sudo privileges
  • Access to the terminal window/command line

Source Command Syntax

The source command uses the following syntax:

source [filename] [arguments]
  • [filename] : The name or path to the file you want the source command to execute.
  • [arguments] : Any arguments you provide become positional parameters when the file is executed.

Note: If you don’t provide the full path to the file you want to execute, source will search the $PATH variable for the file. If it does not find the file there, source will search the current directory.

The dot (period) character can be used in place of the source command, resulting in the same output:

Linux Source Command Examples

Here are some of the ways you can use the source command:

Pass Arguments

Create a text file called example.txt in the Home directory with the following content:

Use the source command to pass the content of this file as an argument:

Using the source command to pass a file as an argument

The output shows that the source command moves line by line, executing any commands listed in example.txt.

For a more complex example, change the content of example.txt to:

echo "The current directory is:" pwd echo "Today's date is:" date echo "The time is:" time 

Move the file to Home/source_command/example. With the source command, pass the content of the file as an argument using the full path to the file:

source source_command/example/example.txt

Using the source command with the full path to the file

Note: The source command also allows you to run scripts in the current shell environment, unlike the bash command, which creates a new shell environment.

Read the Configuration File

The source command also allows you to read variables from a file. Start by creating an example configuration file example_config.sh in the Home directory and adding the following content:

Create a bash script called example_bash.sh and add the following:

#!/usr/bin/env bash source example_config.sh echo "VAR1 is $VAR1" echo "VAR2 is $VAR2" echo "VAR3 is $VAR3"

The source command allows example_bash.sh to read the variables VAR1 , VAR2 , and VAR3 you defined in example_config.sh.

Run the example_bash.sh script using the source command:

Using the source command to read variables from a configuration file

Source Functions

If you have functions you are using in several different scripts, you can save them as separate files and use the source command to refer to them when writing scripts.

For instance, start by creating a function check_root.sh that checks whether the user running the script is a root user:

Create a script called example_script.sh and use the source command to insert the check_root.sh function:

#!/usr/bin/env bash source check_root.sh check_root echo "This is the root user"

Running this script as a non-root user produces «You must run this script as root» as the output and exits the script:

Running the script as a non-root user

Running the script as a root user shows «This is the root user» as the output:

sudo bash example_script.sh

Running the script as a root user

Note: Using the source command to run example_script.sh executes the script in the current shell environment. Since you cannot run the source command as the root user, starting the script causes the terminal window to close. Use the bash command to execute the script instead.

Refresh the Current Shell Environment

For this example, we are creating an alias command ll :

This command lists the files in the current directory using the extended format:

Using the new ll command to list the files in the current directory

However, this command only works in the current shell session. To make it permanent, open the bashrc file with:

Under the #some more ls aliases section, add the following:

Adding the new ll command alias in the bashrc file

Refresh the current shell environment with the source command:

After reading this tutorial, you should know how to use the source command in Linux to run multiple commands from a single file.

For a more comprehensive overview of useful commands, check out our Linux commands cheat sheet.

Источник

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