Мне нужно найти помощь для команды точки, .
например, в . ./my_script.sh
(я имею в виду первую точку.)
Я уже пытался найти справочную страницу, используя man .
и man \.
. Как я могу отобразить справочную страницу, в которой объясняется использование команды .
?
help .
dot
. См. Формальную спецификацию на pubs.opengroup.org/onlinepubs/009696699/utilities/dot.html.
- это команда, в частности встроенная оболочка. В Bash это эквивалентноsource
..
это POSIX, а не только bash. Например, это также в zsh и ksh.Ответы:
Прежде всего, вы должны вызвать
type .
, вы, вероятно, получите что-то вроде:Встроенные компоненты являются частью вашей оболочки, у них нет собственных страниц руководства. Некоторые из них могут показаться, что они есть, например,
echo
встроенный в Bash, но, скорее всего, есть отдельный исполняемый файл, как/bin/echo
в вашей системе, и в этом случаеman echo
относится к последнему . Эти дваecho
, вероятно, не являются строго эквивалентными.Ваша оболочка может предоставлять информацию о любой встроенной функции через
help
встроенную систему; попробоватьhelp help
,help type
и , наконец:Встроенные файлы также могут быть перечислены на странице руководства вашей оболочки. Например, (в моем Debian) встроенные функции Bash включены непосредственно
man bash
, но для встроенных Zsh-командman zsh
мне нужно запуститьman zshbuiltins
. В общем, раковины могут или не могут объяснить их встроенные функции.источник
.
это встроенная оболочка, и это должно быть помечено как ответ, потому что OP спрашиваетhow to find help for . in *nix ?
.type .
чтобы продемонстрировать, что некоторые команды являются встроенными командами оболочки.bash-builtins(1)
страницу руководства, которая имеет более удобный размер.. --help
работаетПопробуйте использовать
man sh
илиman bash
или справочную страницу для любой оболочки, которую вы используете. (Возможноman $SHELL
.)Официально это называется не команда «точка», а
source
команда. Поиск словаsource
может быть полезным.например, bash man page (поиск по "каждой встроенной команде"), и вы быстро найдете документацию.
Что касается объяснения использования, я могу сделать это прямо здесь. Я просто буду называть это
source
командой, признавая, что ее можно сокращать до периода, когда вы используете некоторые оболочки, и с некоторыми оболочками эта команда может потребоваться (потому что точка может быть распознана, но все словоsource
может не быть).Если вы используете
source
команду, ваша оболочка прочитает каждую строку из файла сценария и попытается выполнить ее. Вам нужно разрешение на чтение файла. (Неважно, есть ли у вас разрешения на «выполнение».) Если вы изменяете переменную, это может повлиять на вашу текущую оболочку.Если, с другой стороны, вы просто пытаетесь выполнить файл, то ваша оболочка попросит операционную систему выполнить этот запрос. Это потребует разрешения «выполнить». (В некоторых системах, таких как OpenBSD, для этого вам не понадобятся разрешения на «чтение». В других системах, включая многие варианты Unix, вам это понадобится.) Возможно, файл должен начинаться с соответствующего заголовка (например,
#!/bin/sh
), чтобы рабочая Система распознает это как файл сценария. Операционная система выполнит копию запрошенной оболочки и скажет этой оболочке запустить содержимое скрипта. Если среда оболочки изменяется (например, переменная получает новое значение, рабочий каталог изменяется (с помощьюcd
), дескриптор файла перенаправляется (с помощьюexec
) и т. д.), это повлияет только на вложенную оболочку, которая была вызвана для сценария, и не может изменить среду в родительской оболочке, которая вызывала файл сценария.источник
source
в bash. В спецификации POSIX это называется «команда точки» (иsource
псевдоним не поддерживается).man bash
и что тогда/.
? Не очень полезно./source
было бы полезно, но для этого вам нужно знать это.
иsource
то же самое..
и это может бытьsource
, но , как @CharlesDuffy уже упоминалось, это всегда.
в любой POSIX-совместимой оболочке и имеет только псевдонимsource
в одна оболочка.Никто другой не упомянул об этом, так как это часто забывают.
Ваша самая большая подсказка может прийти от полезной команды
whatis
.РЕДАКТИРОВАТЬ:
Некоторые люди отмечают в комментариях, что это не входит в некоторые дистрибутивы - может быть, это устанавливаемый пакет или некоторые включены как - у меня это было по умолчанию в gentoo;)
Он включает в себя замечательный объект, который ... сообщает вам, какой исполняемый файл вызван, и whereis, который дает вам все пути к исполняемому файлу, который вы называете, и его man-страниц (если он существует в нескольких путях).
источник
whatis .
возвращаетсяman: 0703-307 . is not found.
whatis .
ничего не возвращает на Ubuntu 16.04whatis .
дал».: nothing appropriate.
в OpenBSD, это привело к выводу 47 строк. Для этого конкретного примера (с использованием "whatis .
" в Gentoo) результаты могут оказаться просто необычайно хорошими (это означает, что этот метод обычно не так полезен для многих других примеров сценариев).man source
покажет объяснение, что вам нужно.Точка совпадает с исходной командой.
source
выполняет скрипт в текущей оболочке, а не в подоболочке (это обычный способ).Использование
source
переменных, установленных внутри скрипта, сохраняется после его завершения.источник
man source
работает? Не в моем Debian, отсюда и вопрос.source
- это, скорее всего, CentOS.man source
дает вамman bash_builtins
, который ничего не объясняет, но ссылается на васbash(1)
man source
дает мнеsource(3tcl)
...type command
и тогда, если команда является встроеннойhelp command
, вероятно, правильный путь ...Это
.
синоним команды оболочки,source
поэтому в bash ее синтаксис отображается как ...Он работает точно так же, как
include
иimport
команды в других языках, в том смысле, что он читает целевой файл и интерпретирует его, как если бы он был частью текущего скрипта. Таким образом, этот файл будет выполняться полностью перед командами в остальной части текущего сценария.Обычно он должен находиться в начале текущего скрипта и чаще всего используется для загрузки переменных и / или определений функций.
источник