Determina o nome do shell atual [duplicado]

5

Como eu determino o caminho atual do shell ou o nome do shell?

Eu só preciso distinguir sh e bash , mas uma solução portátil seria boa.

    
por Tyilo 28.04.2012 / 18:11

1 resposta

8
  1. Rápido e sujo (e possivelmente errado):

    Quase sempre há uma variável de ambiente $SHELL da qual você pode aprender. Existem alguns casos extremos em que isso falhará, especialmente se um shell interativo for usado para iniciar outro. Os shells mais recentes também definem uma variável sobre si mesmos na forma de $BASH_VERSION ou $ZSH_VERSION . Eu não sei que sh faz isso.

  2. Um pouco mais chique:

    Como alternativa, a maioria dos shells interativos saberão o que são e fornecerão alguma saída útil se você executar algo como echo $0 . Isso parece contar com as mesmas informações que você obteria se executasse ps -fp $$ , o que recuperaria os dados do processo para o processo que iniciou o ps.

  3. Mais robusto:

    Uma maneira que pode funcionar para alguns shells e ambientes que não possuem conveniência, como o conjunto de variáveis de ambiente, seria extrair os dados que você quer de proc e descobrir para qual caminho executável está apontando usando% código%. Isso tem a vantagem de fornecer informações sobre o executável que foi lançado, mesmo que fosse um link simbólico para outra coisa. Nesse caso, a variável readlink -f /proc/$$/exe pode estar mentindo para você.

por 28.04.2012 / 18:13

Tags