$ whatis source
source: nothing appropriate.
$ man source
No manual entry for source
$ source
bash: source: filename argument required
source: usage: source filename [arguments]
Existe e é executável. Por que não existe documentação sobre isso no Ubuntu? O que isso faz? Como posso instalar documentação sobre isso?
bash
shell
documentation
Andrea Ambu
fonte
fonte
$ type source
source is a shell built-in
$ whatis source
source (1) - bash built-in commands, see bash(1)
. Além disso,man source
me leva àsBASH_BUILTINS(1)
páginas de manual. Isso está no Fedora, não há idéia do por que esses pacotes debian não estão documentados (ou mal).Respostas:
source
é um comando interno do bash shell que executa o conteúdo do arquivo passado como argumento, no shell atual . Tem um sinônimo em.
(ponto final).fonte
source
um comando específico do bash ou outros shells também o possuem? (Eu estou pedindo para obter tags no sobre a questão ...)source
estava presente na concha Bourne e, portanto, provavelmente presente em todos os seus descendentes. en.wikipedia.org/wiki/Bourne_shell . Eu sei que nem todas as conchas têm osource
comando, menos certo sobre quais conchas o contêm.source
não estava presente no shell Bourne, é uma extensão GNU que veio muito mais tarde. A sintaxe original e ainda portátil (POSIX) é usar o comando "ponto", ou seja.
. Pessoalmente, nunca o utilizo, umasource
vez que demora mais para digitar e não possui valor agregado. Eu acho que seu principal objetivo é tornar os scripts mais legíveis para iniciantes.source
não é apenas mais descritivo, mas parece algo diferente de um erro de digitação. Já tive pessoas pulando o ponto / ponto quando envio comandos técnicos por email.source
em um "arquivo de configuração" que contém principalmente atribuições de variáveis. As atribuições de variáveis controlam as coisas que o restante do script faz. Obviamente, um bom script definirá variáveis para padrões sensíveis antes desource
, ou pelo menos verificará valores válidos.Seja cuidadoso!
./
e nãosource
são exatamente iguais ../script
executa o script como um arquivo executável, iniciando um novo shell para executá-losource script
lê e executa comandos do nome do arquivo no ambiente atual do shellNota:
./script
não é. script
, mas. script
==source script
https://askubuntu.com/questions/182012/is-there-a-difference-between-and-source-in-bash-after-all?lq=1
fonte
./ == source == .
É útil conhecer o comando 'type':
sempre que algo está embutido, é hora de fazer
man bash
.fonte
man
)help {builtin-name}
, iehelp source
.help
não funciona em qualquer lugar (pelo menos no zsh).type
faz.. (um ponto) é um comando interno do shell bash que executa os comandos de um arquivo passado como argumento, no shell atual. 'source' é sinônimo de '.'.
Na página do manual do Bash:
fonte
'source' é a versão longa de '.' comando. No prompt do bash, pode-se fazer:
para recarregar sua configuração (alterada?) do bash para o bash atual em execução.
A versão curta seria:
A página do manual:
fonte
source
O comando executa o script fornecido (a permissão executável não é obrigatória ) no ambiente atual do shell, enquanto./
executa o script executável fornecido em um novo shell.source
comando tem um sinônimo. filename
.Para deixar mais claro, dê uma olhada no script a seguir, que define o alias.
criar alias
Agora, temos duas opções para executar este script. Mas com apenas uma opção, o alias desejado para o shell atual pode ser criado entre essas duas opções.
Opção 1:
./make_alias
Torne o script executável primeiro.
Executar
Verificar
Resultado
Ops! Alias se foi com o novo shell.
Vamos com a segunda opção.
Opção 2:
source make_alias
Executar
ou
Verificar
Resultado
Sim, Alias está definido.
fonte
Em caso de dúvida, a melhor coisa a fazer é usar o
info
comando:fonte
Digite o comando "fonte de ajuda" no seu shell.
Você obterá uma saída como esta:
fonte
No projeto de documentação do Linux, no Advanced Bash Scripting Guide,
capítulo 15 - Comandos internos e recursos internos :
Portanto, para aqueles familiarizados com a linguagem de programação C, o fornecimento de um arquivo tem um efeito semelhante à
#include
diretiva.Observe também que você pode passar argumentos posicionais para o arquivo que está sendo originado, como:
fonte
source
poderia levar argumentos ou usarreturn
.Deve-se notar que, apesar de ser um comando incrível, nem
source
nem a sua forma abreviada de.
se fonte de mais de um arquivo, significadoou
não vai funcionar.
Podemos voltar a usar
for
loops, mas ele executaria o executável várias vezes, criando vários comandos ou problemas.Conclusão:
source
não aceita vários arquivos como entrada. O argumento tem que ser um.O que é uma merda IMHO.
fonte
Com o código-fonte, você pode passar variáveis ou funções de outro arquivo para o seu script e usá-las sem precisar escrevê-las novamente.
FI:
Felicidades
fonte