Environment var _

3

Eu envio um comando printenv na linha de comando e vejo que uma das variáveis é a seguinte:

_=/usr/bin/printenv

Agora faço isso:

mo@mo-Toshiba ~/Workspace $ printenv _
/usr/bin/printenv

mas ao tentar chamar echo nessa variável, recebo o seguinte:

mo@mo-Toshiba ~/Workspace $ echo $_
_

O que dá? Por que o echo não trata isso como uma variável? (ou seja, como $ PATH ou $ PWD)

    
por moesef 13.04.2013 / 01:10

1 resposta

4

É uma variável. A variável de shell _ é atualizada pelo shell cada vez que você executa um comando para conter o último argumento do comando anterior.

Não é útil com muita frequência, mas permite escrever um apelido ou função para executar algo no “mesmo arquivo (ou outro objeto) que o último comando”.

A variável também é adicionada ao ambiente dos subprocessos. Lá, ele contém o nome do comando como passado no shell (antes de PATH lookup).

    
por Gilles 13.04.2013 / 01:14