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 .