O que $ 0 mantém quando chamado através de um symlink?

2

O parâmetro shell $0 contém o nome do programa de chamada. Se você criar um link simbólico chamado my_command em seu diretório inicial para o comando /usr/local/bin/command1 e executá-lo digitando ./my_command , qual será o valor de $0 ? Alguém pode também explicar por quê? Obrigado!

    
por Linuxn00b 07.10.2015 / 21:54

2 respostas

5

$0 não contém o nome do programa de chamada, mas o nome do programa chamado. O programa chamado é ./my_command então $0 será ./my_command .

O fato de ser um link simbólico não faz diferença.

    
por 07.10.2015 / 22:00
0

Uma linha de comando (ou melhor, no UNIX, uma matriz de argumentos de linha de comando), incluindo o que se tornaria $0 , é passada para o exec chama pelo programa de chamada.

Resolução de Symlink, shebang processing etc. só é feita depois disso, pelo sistema, como parte do processamento da chamada exec .

Assim, qualquer que seja o programa de chamada (o shell no seu caso) especificado como o primeiro item em argv ( /.my_command no seu caso) torna-se $0 .

    
por 08.10.2015 / 12:31

Tags