Qual é a diferença entre executar um script (por exemplo / some / script) com source /some/script
e . /some/script
no Bash?
147
source
e .
são sinônimos no Bash .
Para quem quiser verificar se os comandos são simplesmente sinônimos e nada mais, consulte o código-fonte , digamos a versão 4.3, e examine o arquivo builtins/source.def
. Você vai ler que ambos os comandos internos, source
e .
, use a mesma função: source_builtin
.
.
é o comando de origem tradicional, herdado do antigo shell bourne.source
é apenas um bash embutido que faz exatamente o mesmo que.
, presumivelmente porque é mais legível (.
pode ser difícil identificar um sozinho com uma fonte pequena). Você veráhelp source
ehelp .
mostra as mesmas informações.man bash
e procurar,source
verá que issosource filename [arguments]
é sinônimo. filename [arguments]
..
é sinônimo desource
no bash, mas não no POSIX sh, portanto, você deve usar.
se o script for executado por / bin / sh. Observe que o bash afirma ser executado como POSIX sh quando chamado como / bin / sh, mas aceitasource
sem reclamação.Esse comportamento me incomodou, scripts testados com bash como / bin / sh falham quando executados no ash, por exemplo.
fonte
#!/bin/sh
você nunca deve assumir que o shell suporta nada além de recursos POSIX. pubs.opengroup.org/onlinepubs/9699919799/utilities/…