Estou tentando criar um script simples que, entre outras coisas, criará um subshell:
#!/bin/sh
# setup
"${@:-$SHELL}"
# teardown
A questão é: preciso alterar o prompt padrão, por exemplo:
$ # shell padrão
$ ./myscript
(myscript) $ # subshell
(myscript) $ exit
$
Eu tentei mudar PROMPT
e PS1
, mas nenhuma dessas obras. Como eu posso fazer isso?
PS .: Preciso de uma solução que funcione tanto no Bash quanto no ZSH, se possível.
bash
apenas para ela .Respostas:
Eu acho que você pode criar um subshell com um prompt diferente como este:
Exemplo
Env atual:
No sub shell:
Voltar ao shell original:
fonte
here string
substituição em vez da substituição do processo. por exemplo<<< "PS1..."
.O motivo ele não funciona pode ser porque quando você carrega o shell (que deve ser, por exemplo .:
/bin/bash
), ele vai acabar de recarregar seus arquivos de configuração, que incluem as variáveis de ambiente para o prompt (ex .:$HOME/.bashrc
) depois de ser passado a variáveis de ambiente que você deseja - portanto, suas variáveis são descartadas.Convém verificar as opções do shell para carregar arquivos de configuração personalizados (por exemplo:
--rcfile
no Bash IINM) e usá-los, além\env
de passar as variáveis de ambiente que você deseja. O problema é que, assim que você dispara, o subshell se torna dependente do shell.( CAVEAT EMPTOR : Ainda não considero que seja uma resposta - em particular, ainda não tentei nada disso no meu sistema.)
fonte