Por que novos terminais no Awesome spawn com SHLVL1?

3

Eu tenho um PS1 que mostra o SHLVL se não for 1 para ver rapidamente se estou em uma subcamada. Isso funciona como esperado ao usar o GNOME, mas quando eu gero um novo terminal no Awesome WM ( Mod4 + Retornar ) sempre começa com SHLVL=2 ou superior. Isso é normal?

Isto está diretamente relacionado ao número de vezes que reiniciei Awesome ( Mod4 + Ctrl + r ou pkill -HUP awesome ). Existe alguma maneira de evitar a geração de novos shells ao reiniciar?

Estes comissões parecem ser relevantes, pois o Awesome acaba rodando algo como $SHELL -c ... on HUP , mas eu não sei sabe o suficiente C para consertar isso.

Meu /bin/sh é dash e meu shell de login é bash .

Relatado o problema .

    
por l0b0 05.02.2013 / 14:50

1 resposta

3

Acho que entendo o porquê, mas não tenho uma correção completa.

O comportamento de SHLVL depende do shell. Em dash e ksh (ambos pdksh e ksh93), apenas as instâncias interativas incrementam SHLVL . No bash e zsh, todas as instâncias incrementam SHLVL , mesmo bash -c … .

Se você observou uma mudança no comportamento após este patch , é provável que seu /bin/sh seja traço e seu $SHELL seja bash. Antes, o awesome estava executando /bin/sh -c … , o que não alterou SHLVL . Após o patch, ele agora está executando $SHELL -c … , ou seja, bash -c … , o que incrementa SHLVL .

Você pode trapacear alterando SHLVL dentro do Awesome. Conecte-se ao código de inicialização para diminuir SHLVL por 1. Tenho certeza de que isso é possível sem recompilar o código C, embora eu não conheça o código Lua.

    
por 06.02.2013 / 02:25

Tags