Точка (команда)
В оболочке Unix , точка называемая командой-точкой ( . ), представляет собой команду , которая оценивает команды в компьютерном файле в текущем контексте выполнения. [1] В оболочке C предусмотрена аналогичная функциональность, что и source
команда, [2] и это имя также встречается в «расширенных» оболочках POSIX. [3] [4]
Команду «точка» не следует путать с файлом «точка» с префиксом точки , который представляет собой скрытый файл или скрытый каталог . Не следует также путать его с ./scriptfile
обозначение для запуска команд, которое представляет собой просто относительный путь, указывающий на текущий каталог (обозначается в Unix как символ «.» и обычно вне переменной Path ).
Аргументы
[ редактировать ]Имя файла команды «точка» является первым аргументом . Если этот аргумент не содержит косую черту , оболочка будет искать файл во всех каталогах, определенных в PATH переменной среды . В отличие от обычных команд, которые также находятся в PATH, исходный файл не обязательно должен быть исполняемым . В противном случае имя файла рассматривается как простой путь к файлу. [1]
В нескольких «расширенных» оболочках, включая bash, [3] zsh [4] и кш, [5] можно указать параметры во втором аргументе. Если параметры не указаны, исходный файл получит набор позиционных параметров, доступных в текущем контексте. Если указаны параметры, исходный файл получит только указанные параметры. В любом случае параметр $0
будет $0
текущего контекста.
Использование
[ редактировать ]Поскольку выполнение исходного файла выполняется в вызывающем контексте, среда [примечание 1] изменения внутри применяются к текущему процессу или текущей оболочке. Это сильно отличается от сценариев, запускаемых непосредственно shebang или sh foo.sh
, которые запускаются в новом, отдельном пространстве процессов , с отдельной средой.
Таким образом, команду «точка» можно использовать для разделения большого сценария на более мелкие части, что потенциально позволяет реализовать модульную конструкцию. Поиск также часто выполняется оболочкой при запуске сеанса для файлов профиля пользователя, таких как .bashrc
и .profile
.
source
[ редактировать ] source
— это встроенная в оболочку команда, которая оценивает файл, следующий за командой, как список команд, выполняемых в текущем контексте. [6] Часто «текущий контекст» представляет собой окно терминала, в котором пользователь вводит команды во время интерактивного сеанса.
Исходную команду можно сократить до точки ( .
) в Bash и подобных POSIX-оболочках. Однако это неприемлемо в оболочке C , где эта команда появилась впервые.
Некоторые сценарии Bash следует запускать с использованием source your-script
синтаксис, а не запускаться как исполняемая команда, например, если они содержат каталог изменений ( cd
) и пользователь намеревается оставить их в этом каталоге после завершения сценария, или они содержат команду экспорта , и пользователь хочет изменить среду текущей оболочки. Другая ситуация использования — когда файл сценария не имеет разрешения «на выполнение» . Передача имени файла сценария в нужную оболочку запустит сценарий в подоболочке , а не в текущем контексте.
Примечания
[ редактировать ]- ^ См . «Среда выполнения оболочки» в POSIX.1:2013.
Ссылки
[ редактировать ]- ^ Jump up to: а б «POSIX.1:2013 Язык команд оболочки § точка» . Проверено 23 мая 2016 г.
- ^ «Справочная страница Csh#команда» . Проверено 23 мая 2016 г.
- ^ Jump up to: а б «Справочное руководство Bash § Встроенные функции оболочки Bourne» . Проверено 23 мая 2016 г.
- ^ Jump up to: а б «Встроенные команды оболочки ZSH» . Проверено 23 мая 2016 г.
- ^ "справочная страница ksh" . Оракул . Проверено 23 мая 2016 г.
+ . имя [аргумент ...]
- ^ «ВСТРОЕННЫЕ КОМАНДЫ BASH», справочная страница Linux для «исходного кода» в Bash-3.0. 2004 г., 20 апреля