Como posso encontrar ajuda para o comando de ponto '.' em * nix?

21

Eu preciso encontrar ajuda para o comando de ponto . , como em . ./my_script.sh (quero dizer, o primeiro ponto).

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

    
por aturegano 22.03.2018 / 09:20

5 respostas

25

Tente usar man sh ou man bash ou a página do manual para o shell que você está usando. (Talvez man $SHELL .)

Isso não é oficialmente chamado de comando "point", mas o comando source . Procurar pela palavra source pode ser útil.

por exemplo, página man do bash (procure por "cada comando interno"), e você encontrará rapidamente a documentação.

Como para explicar o uso, posso fazer isso aqui. Vou me referir a isso como o comando source , reconhecendo que ele pode ser abreviado para apenas um período quando você estiver usando alguns shells e com alguns shells que o comando talvez precise ser (porque o ponto pode ser reconhecido, mas o todo palavra source pode não ser).

Se você usar o comando source , 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 está propenso a afetar seu shell atual.

Se, por outro lado, você tentar executar o arquivo, seu shell solicitará que o sistema operacional cuide desse pedido. Isso exigirá permissões "executar". (Em alguns sistemas, como o OpenBSD, você não precisará de permissões de "leitura" para isso. Em outros sistemas, incluindo muitas variações Unix, você irá.) O arquivo pode precisar iniciar com um cabeçalho apropriado (por exemplo, #!/bin/sh ) Portanto, o sistema operacional reconhece isso como um arquivo de script. O sistema operacional executará uma cópia do shell solicitado e informará ao shell para executar o conteúdo do script. Se o ambiente 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.), ele afetará apenas o subconjunto -shell que foi chamado para o script e não pode modificar o ambiente no shell pai que chamou o arquivo de script.

    
por 22.03.2018 / 09:27
80

Primeiro de tudo você deve invocar type . , você provavelmente terá algo como:

. is a shell builtin

Construções são partes do seu shell, elas não têm suas próprias páginas de manual. Alguns deles podem parecer tê-los, e. echo é um Bash embutido, mas provavelmente existe um executável separado como /bin/echo em seu sistema e, neste caso, man echo refere-se ao último . Esses dois echo s provavelmente não são estritamente equivalentes.

Seu shell pode fornecer informações sobre qualquer builtin via help builtin; tente help help , help type e finalmente:

help .

O Builtins também pode ser listado na página de manual do seu shell. Por exemplo. (no meu Debian) Bash builtins são cobertos diretamente em man bash , ainda que para o zsh builtins man zsh me diz para executar man zshbuiltins . Em geral, as conchas podem ou não explicar suas builtins.

    
por 22.03.2018 / 11:16
6

Ninguém mais mencionou isso, já que muitas vezes é esquecido.

Sua maior dica 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 distrobuções - talvez seja um pacote instalável, ou habilitado de alguma forma - eu tinha isso por padrão no gentoo;)

Ele inclui o maravilhoso which - que informa a você qual executável é chamado, e whereis que lhe fornece todos os caminhos para um executável que você nomeia, e é man pages (se ele existir em vários caminhos).

    
por 22.03.2018 / 14:32
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 (é o modo usual).

Usando source , as variáveis definidas dentro do script são preservadas após o término do script.

    
por 22.03.2018 / 09:33
0

O . é um sinônimo para o comando shell source e, portanto, em bash , sua sintaxe é exibida por ...

help source

Ele funciona exatamente como os comandos include e import em outros idiomas, pois lê o arquivo de destino e o interpreta como se fosse parte do script atual. Assim, esse arquivo será executado em sua totalidade antes dos comandos no restante do script atual.

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

    
por 29.03.2018 / 06:13

Tags