Como encontro ajuda para o comando point `.` no * nix?

21

Preciso encontrar ajuda para o comando point ., como em . ./my_script.sh(quero dizer o primeiro ponto).

Eu já tentei encontrar uma página de manual usando man .e man \.. Como posso exibir uma página de manual na qual explica o uso do comando .?

aturegano
fonte
14
@ C0deDaedalus: o nome canônico para "." é PARADA COMPLETA. O que as pessoas chamam depende de onde foram criadas.
RedGrittyBrick 22/03
5
Apenas execute:help .
kenorb
2
Nos documentos, no entanto, é chamado dot. Veja a especificação formal em pubs.opengroup.org/onlinepubs/009696699/utilities/dot.html
Charles Duffy
11
@jamesqf .é um comando, especificamente um shell embutido. No Bash é equivalente a source.
22718 wjandrea
4
@ Jamesqf: .é POSIX, não apenas bash. Por exemplo, também está em zsh e ksh.
MSalters

Respostas:

79

Antes de tudo, você deve invocar type ., provavelmente obterá algo como:

. is a shell builtin

Builtins são partes do seu shell, eles não têm suas próprias páginas de manual. Alguns deles podem parecer tê-los, por exemplo, echoestá embutido no Bash, mas provavelmente existe um executável separado, como /bin/echono seu sistema e, neste caso, man echorefere-se ao último . Esses dois echos provavelmente não são estritamente equivalentes.

Seu shell pode fornecer informações sobre qualquer built-in via helpbuilt-in; tente help help, help typee, finalmente:

help .

Builtins também podem ser listados na página de manual do seu shell. Por exemplo (no meu Debian), os Bash builtins são cobertos diretamente man bash, mas para o Zsh, os buildins man zshme dizem para executar man zshbuiltins. Em geral, os reservatórios podem ou não explicar seus componentes internos.

Kamil Maciorowski
fonte
7
+1 para apontar que .é um shell embutido e Isso deve ser marcado como resposta porque o OP pergunta how to find help for . in *nix ?.
C0deDaedalus 22/0318
7
+1 para o uso de type .para demonstrar que alguns comandos são internos do shell.
Roger Lipscombe
1
Na maioria dos Debian, os Bash embutidos também são extraídos para a bash-builtins(1)página de manual, que é de um tamanho mais conveniente.
precisa
Além disso, invocar "type" só funciona se você estiver usando um shell que tenha um "type" embutido. Se você estiver usando o tcsh, "digite". dá "tipo: comando não encontrado".
Jamesqf # 22/18
1
Even . --helpworks
Digital Trauma
25

Tente usar man shou man bashou a página de manual para qualquer shell que você esteja usando. (Talvez man $SHELL.)

Isso oficialmente não é chamado de comando "point", mas de sourcecomando. Procurar a palavra sourcepode ser útil.

por exemplo, página de manual do bash (pesquise "cada comando embutido") e você encontrará rapidamente a documentação.

Quanto a explicar o uso, eu posso fazer isso aqui. Vou me referir a isso como o sourcecomando, reconhecendo que pode ser abreviado para apenas um período em que você está usando algumas conchas e com algumas conchas que esse comando pode precisar (porque o ponto pode ser reconhecido, mas a palavra inteira sourcepode não ser estar).

Se você usar o sourcecomando, seu shell lerá cada linha do arquivo de script e tentará executá-lo. Você precisa de permissões de "leitura" no arquivo. (Não importa se você tem permissões de "execução".) Se você modificar uma variável, isso poderá afetar seu shell atual.

Se, por outro lado, você apenas tentar executar o arquivo, seu shell solicitará que o sistema operacional cuide dessa solicitação. Isso exigirá permissões de "execução". (Em alguns sistemas, como o OpenBSD, você não precisará de permissões de "leitura" para isso. Em outros sistemas, incluindo muitas variações do Unix, você precisará.) O arquivo pode precisar iniciar com um cabeçalho apropriado (por exemplo, #!/bin/sh) para que a operação O sistema reconhece que este é um arquivo de script. O sistema operacional executará uma cópia do shell solicitado e informará esse shell para executar o conteúdo do script. Se o ambiente do shell for alterado (por exemplo, uma variável obtém um novo valor, o diretório de trabalho é alterado (com  cd), um descritor de arquivo é redirecionado (com exec), etc.), afetará apenas o subconcha que foi chamado para o script e não poderá modificar o ambiente no shell pai que chamou o arquivo de script.

TOOGAM
fonte
15
É apenas sourceno bash. Na especificação POSIX, é chamado "o comando ponto" (e o sourcealias não é suportado).
Charles Duffy
1
Um script precisa de permissões de leitura, caso contrário, o intérprete não pode acessá-lo. Consulte Um script pode ser executável, mas não legível?
wjandrea
1
A execução de um script não abre um sub-shell, mas apenas um processo filho normal, como executar um programa compilado. Veja esta resposta em "Uma subcasca é a mesma coisa que uma concha filho?"
wjandrea
1
Então, eu digito man bashe depois o quê /.? Não é muito útil. /sourceseria útil, mas para isso você precisa saber disso .e sourceé a mesma coisa.
Joker_vD 23/03
1
Eu encontrei seu parágrafo "Como para explicar o uso ..." um pouco enganador, uma vez que implica que ele pode ser .e pode ser source, mas como @CharlesDuffy já mencionado, é sempre . em qualquer shell compatível com POSIX e só tem o alias sourceem uma concha.
21418 Tom Tomech
6

Ninguém mais o mencionou, pois costuma ser esquecido.

Sua maior pista viria do comando útil 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

EDITAR:

Algumas pessoas apontaram nos comentários que isso não está em algumas desobstruções - talvez seja um pacote instalável ou tenha ativado de alguma forma - eu o tinha por padrão no gentoo;)

Inclui o maravilhoso what - que diz a você que executável é chamado e whereis que fornece todos os caminhos para um executável que você nomeou e suas páginas de manual (se existirem em vários caminhos).

djsmiley2k - CoW
fonte
1
Boa dica, mas parece que não funciona em todos os lugares. Por exemplo, no AIX com ksh, whatis .retornaman: 0703-307 . is not found.
aturegano 22/03
4
whatis .não retorna nada no Ubuntu 16.04
Vadim Kotov 22/03
E ".: Nada apropriado." no OpenSuSE usando tcsh.
Jamesqf # 22/18
2
Ah, na sua própria página de manual: "whatis - exibe descrições de página de manual de uma linha". Portanto, parece ser uma versão muito curta do homem.
Xen2050 23/03
Uma opção mais compatível pode ser: apropos (que deve ser o mesmo que executar "man -k"). Para "." ou "fonte" (que faz parte da palavra "recurso"), isso não funciona muito bem, devido a muitos falsos positivos, mas provavelmente funcionaria para seus outros exemplos (bash, lynx e whatis). No Debian Linux: " whatis ." deu " .: nothing appropriate." no OpenBSD, resultou em 47 linhas de saída. Para este exemplo específico (usando " whatis ." no Gentoo), os resultados podem ser incomumente bons (o que significa que essa técnica geralmente não é tão útil para muitos outros cenários de exemplo).
TOOGAM
4

man source mostrará a explicação que você precisa.

O ponto é o mesmo que o comando de origem.

source executa o script no shell atual em vez de em um subshell (é a maneira usual).

O uso sourcedas variáveis ​​definidas no script é preservado após a conclusão do script.

jcbermu
fonte
2
Em que distro (s) man sourcefunciona? Não no meu Debian, daí a pergunta.
Kamil Maciorowski
1
Funciona no CentOS 6.5. Eu acho que está mais relacionado à versão do bash. No meu caso é 4.1.2 (1)
jcbermu
@jcbermu, nenhuma versão do bash envia uma página de manual separada para sourceupstream - é mais provável que algo que o CentOS fez.
Charles Duffy
No meu sistema, man sourcedá-lhe man bash_builtins, que não explica nada, mas remete parabash(1)
Scott
1
No meu sistema (Ubuntu LTS) man sourcedá-me source(3tcl)... type commande, em seguida, se o comando for um builtin help commandé provavelmente a maneira correta ...
Hastur
0

O .é um sinônimo para o shell sourcede comando e assim em festa , sua sintaxe é exibido por ...

help source

Ele funciona exatamente como os comandos includee importem outros idiomas, na medida em que lê o arquivo de destino e o interpreta como se fizesse parte do script atual. Portanto, esse arquivo será executado na íntegra antes dos comandos no restante do script atual.

Geralmente, deve estar no início do script atual e é mais frequentemente usado para carregar variáveis ​​e / ou definições de função.

DocSalvager
fonte