Por que o ponto (.) foi usado como um alias para a fonte e por que outros comandos também não têm atalhos? [fechadas]

5

EDITAR : na verdade, não é um alias (veja as respostas)

Como todos sabem, em um shell, o comando dot ( . ) é um alias para o comando source.

Mas eu me pergunto se há uma razão por trás de um pseudônimo tão estranho? Aparentemente, eu não uso tantas vezes que eu precisaria de um apelido tão curto.

Então, por que um ponto? E por que source e não um comando mais comumente usado, como cd ou ls ? Por que até mesmo um pseudônimo? Existe uma boa razão por trás disso? Ou há uma razão histórica?

OBSERVAÇÃO: originalmente publiquei esta pergunta no Server Fault, mas sugeri que fosse postada aqui.

    
por Arnaud Denoyelle 28.07.2018 / 21:50

3 respostas

13

. é o padrão POSIX .

source é um sinônimo embutido para . e não é tão portável quanto .

Observe também no manual de referência do Bash . está listado em 4.1 Bourne O Shell Builtins e o source estão listados em 4.2 Comandos do Bash Builtin como:

A synonym for . (see Bourne Shell Builtins).

É possível que o bash o tenha chamado source , porque é assim que é chamado no shell C (onde o comando aparentemente se originou).

    
por 28.07.2018 / 21:59
2

O comando dot foi introduzido pelo Bourne Shell em 1976.

O comando source foi introduzido pelo csh em 1977 ou 1978.

Portanto, não há uma relação de alias, mas dois nomes diferentes para uma "invenção" ao mesmo tempo.

BTW: Eu posso dizer por que cd é nomeado assim. O comando anteriormente tinha sido chamado chdir , mas isso foi muito longo (lento para digitar) para os próximos modems de 110 bauds em 1974 ...

    
por 28.07.2018 / 23:39
2

No que diz respeito ao Bash, . e source não são aliases para um ou outro, é um fato simples que ambos são internos que chamam a mesma função subjacente, source_builtin .

Dê uma olhada no arquivo source.def do código-fonte do Bash:

$PRODUCES source.c

$BUILTIN source
$FUNCTION source_builtin
$SHORT_DOC source filename [arguments]
Execute commands from a file in the current shell.

Read and execute commands from FILENAME in the current shell.  The
entries in $PATH are used to find the directory containing FILENAME.
If any ARGUMENTS are supplied, they become the positional parameters
when FILENAME is executed.

Exit Status:
Returns the status of the last command executed in FILENAME; fails if
FILENAME cannot be read.
$END

$BUILTIN .
$DOCNAME dot
$FUNCTION source_builtin
$SHORT_DOC . filename [arguments]
Execute commands from a file in the current shell.

Read and execute commands from FILENAME in the current shell.  The
entries in $PATH are used to find the directory containing FILENAME.
If any ARGUMENTS are supplied, they become the positional parameters
when FILENAME is executed.

Exit Status:
Returns the status of the last command executed in FILENAME; fails if
FILENAME cannot be read.
$END

Referências

por 29.07.2018 / 04:37