source
is a bash shell built-in command that executes the content of the file passed as argument, in the current shell. It has a synonym in .
(period).
Syntax
. filename [arguments] source filename [arguments]
$ whatis source source: nothing appropriate. $ man source No manual entry for source $ source bash: source: filename argument required source: usage: source filename [arguments]
Он существует и работает. Почему в Ubuntu нет документации по этому поводу? Что оно делает? Как я могу установить документацию об этом?
source
is a bash shell built-in command that executes the content of the file passed as argument, in the current shell. It has a synonym in .
(period).
Syntax
. filename [arguments] source filename [arguments]
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 environmentNote: ./script
is not . script
, but . script
== source script
It is useful to know the 'type' command:
> type source source is a shell builtin
whenever something is a shell builtin it is time to do man bash
.
. (a period) is a bash shell built-in command that executes the commands from a file passed as argument, in the current shell. 'source' is a synonym for '.'.
From Bash man page:
. 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 exe‐ cuted from filename. If filename does not contain a slash, file names in PATH are used to find the directory containing file‐ name. 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 shopt builtin command is turned off, the PATH is not searched. If any arguments are supplied, they become the posi‐ tional 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.
'source' is the long version of '.' command. On the bash prompt one can do:
source ~/.bashrc
to reload your (changed?) bash setting for current running bash.
Short version would be:
. ~/.bashrc
The man page:
. 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.
source
Команда выполняет предоставленный сценарий (исполняемое разрешение является не обязательным ) в текущей среде оболочки, а ./
выполняет предоставленный исполняемый скрипт в новой оболочке.
source
У команды есть синоним . filename
.
Чтобы сделать это более понятным, взгляните на следующий скрипт, который устанавливает псевдоним.
#! /bin/bash alias myproject='cd ~/Documents/Projects/2015/NewProject'
Теперь у нас есть два варианта выполнения этого скрипта. Но только с одной опцией желаемый псевдоним для текущей оболочки может быть создан среди этих двух опций.
./make_alias
Сначала сделайте скрипт исполняемым.
chmod +x make_alias
./make_alias
alias
**nothing**
Упс! Псевдоним ушел с новой оболочкой.
Пойдем со вторым вариантом.
source make_alias
source make_alias
или же
. make_alias
alias
alias myproject='cd ~/Documents/Projects/2015/NewProject'
Да, Псевдоним установлен.
When in doubt, the best thing to do is use the info
command:
[root@abc ~]# info source BASH BUILTIN COMMANDS Unless otherwise noted, each builtin command documented in this section as accepting options preceded by - accepts -- to signify the end of the options. The :, true, false, and test builtins do not accept options and do not treat -- specially. The exit, logout, break, continue, let, and shift builtins accept and process arguments beginning with - with- out requiring --. Other builtins that accept arguments but are not specified as accepting options interpret arguments beginning with - as invalid options and require -- to prevent this interpretation. : [arguments] No effect; the command does nothing beyond expanding arguments and performing any specified redirections. A zero exit code is returned. . 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 exe- cuted from filename. If filename does not contain a slash, file names in PATH are used to find the directory containing file- name. 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 shopt builtin command is turned off, the PATH is not searched. If any arguments are supplied, they become the posi- tional 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.
Введите команду «источник помощи» в вашей оболочке.
Вы получите вывод, как это:
source: source filename [arguments] Execute commands from a file in the current shell. Read and execute commands from FILENAME in the current shell. The entries in $PATH are used to find the directory containing FILENAME. If any ARGUMENTS are supplied, they become the positional parameters when FILENAME is executed. Exit Status: Returns the status of the last command executed in FILENAME; fails if FILENAME cannot be read.
Из Проекта документации Linux, Расширенное руководство по написанию сценариев Bash,
Глава 15 - Внутренние команды и встроенные функции :
источник, . (точечная команда):
эта команда при вызове из командной строки выполняет сценарий. Внутри скрипта исходное имя файла загружает имя файла. Поиск файла (точка-команда) импортирует код в скрипт, добавляя его в скрипт (тот же эффект, что и директива #include в программе на Си). Чистый результат такой же, как если бы в теле скрипта физически присутствовали «исходные» строки кода. Это полезно в ситуациях, когда несколько сценариев используют общий файл данных или библиотеку функций.
Если исходный файл сам по себе является исполняемым скриптом, он запустится, а затем вернет управление скрипту, который его вызвал. Исходный исполняемый скрипт может использовать возврат для этой цели.
Таким образом, для тех, кто знаком с языком программирования C, поиск файла имеет эффект, аналогичный #include
директиве.
Также обратите внимание, что вы можете передавать позиционные аргументы в файл источника, например:
$ source $filename $arg1 arg2
Следует отметить, что хотя и являются удивительной команда, ни, source
ни его сокращенным из .
будет источник более одного файла, значение
source *.sh
или же
. script1.sh script2.sh
не будет работать
Мы можем прибегнуть к использованию for
циклов, но он будет многократно запускать исполняемый файл, создавая несколько команд или выпуская его.
Вывод: source
не принимает несколько файлов в качестве входных данных. Аргумент должен быть один.
Который ИМХО отстой.