Como obter o caminho absoluto do shell atual em um script de origem? [duplicado]

0

Suponha que alguém execute

. some_script

ou

source some_script

Como pode some_script determinar o caminho absoluto do shell atual (ou seja, aquele que está executando o comando . ou source )? (Observe que, em geral, esse caminho não é o mesmo que o valor de $SHELL .)

Em outras palavras, estou procurando a contraparte do "caminho absoluto" de $$ . Eu acho que o processo shell atual deve conhecer o executável de onde veio, mas AFAICT, não é armazenado em nenhuma variável de ambiente.

O melhor que posso encontrar resume-se a extrair a saída gerada por uma variante adequada de ps -p $$ ; por exemplo:

CURRENT_SHELL=${"$( PS_FORMAT=cmd PS_PERSONALITY=linux ps -p $$ -h )"% *}

Isso provavelmente não é muito portátil. (E é feio, para arrancar.)

Estou principalmente interessado no caso em que o shell atual é uma versão de zsh . (Eu tenho um interesse secundário na resposta correspondente para bash .)

    
por kjo 31.03.2016 / 14:58

1 resposta

0

Veja o que eu uso:

head -n 1 /proc/$$/status | cut -f2

Não tenho certeza se é portável para todos os Unices, mas funciona no Linux e no Cygwin.

    
por 31.03.2016 / 17:09