Como o prompt de mudança do subshell

8

Estou tentando criar um script simples que, entre outras coisas, criará um subnível:

#!/bin/sh

# setup

"${@:-$SHELL}"

# teardown

A pergunta é: preciso alterar o prompt padrão, por exemplo:

$ # default shell
$ ./myscript
(myscript) $ # subshell
(myscript) $ exit
$

Eu tentei alterar PROMPT e PS1 , mas nada disso funciona. Como posso fazer isso?

PS .: Eu preciso de uma solução que funcione tanto no Bash quanto no ZSH, se possível.

    
por Lucas Sampaio 16.08.2013 / 23:23

2 respostas

5

Acho que você pode criar um subshell com um prompt diferente como este:

$ bash --rcfile <(echo "PS1='subshell prompt: '") -i

Exemplo

env atual:

$ bash --rcfile <(echo "PS1='subshell prompt$ '") -i

Em sub shell:

subshell prompt$ echo hi
hi
subshell prompt$ exit
exit

Voltar ao shell original:

$ 
    
por 17.08.2013 / 00:10
2

O motivo pelo qual não funciona pode ser porque quando você carrega o shell (que deve ser, por exemplo: /bin/bash ), ele irá acabar recarregando seus arquivos de configuração, que incluem as variáveis de ambiente para o prompt (por exemplo. : $HOME/.bashrc ) após sendo passado as variáveis de ambiente que você quer - assim suas variáveis são descartadas.

Você pode querer verificar as opções do shell para carregar arquivos de configuração personalizados (por exemplo: --rcfile no Bash IINM) e usá-los, assim como \env , para passar as variáveis de ambiente desejadas. O problema é que, quando você faz isso, a subcamada torna-se dependente do shell.

( CAVEAT EMPTOR : Eu não considero isso uma resposta ainda - em particular, eu não tentei nada disso no meu sistema ainda.)

    
por 16.08.2013 / 23:30

Tags