O que este env var significa? “_ = / Usr / bin / kdeinit”

0
cshell> env 
...
_=/usr/bin/kdeinit

Eu suspeito que essa variável desacelera a inicialização do vim. Agora eu tenho que lançar 'vim -X', caso contrário, leva 6 segundos para iniciar o vim.

Não consigo pesquisar no google, já que a maioria das respostas relacionadas a "env var sublinhado" explicam "$ _", o que não é o que eu quero.

    
por Yao Jin 24.10.2016 / 06:10

1 resposta

1

Resposta fácil com csh

Se você se preocupar apenas com o C Shell, é fácil. É a linha de comando do último comando executado. Veja Substituição variável no tcsh documentação

Resposta fácil com o bash

No Bash, a documentação no capítulo Parâmetros especiais diga-nos o seguinte:

At shell startup, set to the absolute pathname used to invoke the shell or shell script being executed as passed in the environment or argument list. Subsequently, expands to the last argument to the previous command, after expansion. Also set to the full pathname used to invoke each command executed and placed in the environment exported to that command. When checking mail, this parameter holds the name of the mail file.

Então, em bash , geralmente é o último argumento para o comando anterior. Normalmente ...

Resposta complexa com bash e csh

No seu caso, o software kdeinit foi chamado a partir de um shell Bash. Antes de executar kdeinit , o caminho completo do comando ( / usr / bin / kdeinit ) foi copiado por bash na variável de ambiente underscore conforme a explicação abaixo. O software kdeinit inicializou seu ambiente gráfico, propagando esta variável de ambiente para todos os processos filhos. Seu terminal C Shell, portanto, herdou essa variável de ambiente.

Quando você está nesse C Shell, a confusão é entre a variável do shell $ _ e a variável de ambiente _ . Em C Shell, quando você usa a construção $ name , ela gera a variável shell ou a variável de ambiente se a variável shell não existir. Neste caso, ambos existem e são diferentes. A variável de ambiente (como mostrado pelo comando env ) sempre lembrará o mesmo valor / usr / bin / kdeinit enquanto a variável shell irá continuar mudando para mostrar o último comando executado .

    
por 26.10.2016 / 07:19