21

Мне нужно найти помощь для команды точки . такие как в . ./my_script.sh (я имею в виду первый пункт.)

Я уже пытался найти справочную страницу, используя man . и man \. , Как я могу отобразить справочную страницу, в которой объясняется использование команды .?

5 ответов5

80

Прежде всего вы должны вызвать type . вы, вероятно, получите что-то вроде:

. is a shell builtin

Встроенные компоненты являются частью вашей оболочки, у них нет собственных страниц руководства. Хотя некоторые из них могут показаться такими, например, например, echo - это встроенная функция Bash, но, скорее всего, в вашей системе есть отдельный исполняемый файл, такой как /bin/echo , и в этом случае man echo ссылается на последний. Эти два echo , вероятно, не являются строго эквивалентными.

Ваша оболочка может предоставлять информацию о любой встроенной функции через встроенную help ; попробуйте help help , help type и наконец:

help .

Встроенные файлы также могут быть перечислены на странице руководства вашей оболочки. Например (в моем Debian) встроенные функции Bash находятся непосредственно в man bash , но для встроенных Zsh man zsh говорит мне запустить man zshbuiltins . В общем, оболочки могут объяснить, а могут и не объяснить их встроенные функции.

25

Попробуйте использовать man sh или man bash или man-страницу для любой оболочки, которую вы используете. (Может быть, man $SHELL .)

Официально это называется не команда "точка", а команда source . Поиск source слова может быть полезным.

например, bash man page (поиск по "каждой встроенной команде"), и вы быстро найдете документацию.

Что касается объяснения использования, я могу сделать это прямо здесь. Я просто буду называть это source командой, признавая, что ее можно сокращать до периода, когда вы используете несколько оболочек, а с некоторыми оболочками эта команда может потребоваться (поскольку точка может быть распознана, но весь source слова целиком не может быть).

Если вы используете source команду, ваша оболочка прочитает каждую строку из файла сценария и попытается выполнить ее. Вам нужно разрешение на чтение файла. (Неважно, есть ли у вас права на "выполнение".) Если вы изменяете переменную, это может повлиять на вашу текущую оболочку.

Если, с другой стороны, вы просто пытаетесь выполнить файл, то ваша оболочка попросит операционную систему позаботиться об этом запросе. Это потребует разрешения "выполнить". (В некоторых системах, таких как OpenBSD, для этого вам не понадобятся разрешения на "чтение". На других системах, включая многие варианты Unix, вы будете.) Возможно, файл должен начинаться с соответствующего заголовка (например, #!/bin/sh), поэтому операционная система распознает это как файл сценария. Операционная система выполнит копию запрошенной оболочки и скажет этой оболочке запустить содержимое скрипта. Если среда оболочки изменяется (например, переменная получает новое значение, рабочий каталог изменяется (с помощью cd), дескриптор файла перенаправляется (с помощью exec) и т.д.), Это влияет только на вложенную оболочку, которая была вызван для сценария, и не может изменить среду в родительской оболочке, которая вызывала файл сценария.

6

Никто не упомянул об этом, так как это часто забывают.

Ваша самая большая подсказка может прийти от полезной команды whatis .

tim@musha ~ $ whatis .
builtins (1)         - bash built-in commands, see bash(1)
tim@musha ~ $ whatis source
builtins (1)         - bash built-in commands, see bash(1)
tim@musha ~ $ whatis bash
bash (1)             - GNU Bourne-Again SHell
tim@musha ~ $ whatis lynx
lynx (1)             - a general purpose distributed information browser for the World Wide Web
tim@musha ~ $ whatis linux
linux: nothing appropriate.
tim@musha ~ $ whatis whatis
whatis (1)           - display one-line manual page descriptions

РЕДАКТИРОВАТЬ:

Некоторые люди отметили в комментариях, что это не входит в некоторые дистрибутивы - может быть, это устанавливаемый пакет, или некоторые включены как - у меня это было по умолчанию в gentoo;)

Он включает в себя замечательный объект, который ... сообщает вам, какой исполняемый файл вызван, и whereis, который дает вам все пути к исполняемому файлу, который вы называете, и его man-страниц (если он существует в нескольких путях).

4

man source покажет объяснение, которое вам нужно.

Точка совпадает с исходной командой.

source выполняет скрипт в текущей оболочке, а не в подоболочке (это обычный способ).

При использовании source переменные, установленные внутри скрипта, сохраняются после его завершения.

0

. является синонимом команды shell source поэтому в bash ее синтаксис отображается как ...

help source

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .