Revisando um script bash – Invocando uma mudança de cor do prompt por meio de um arquivo temporário

Revisando um script bash – Invocando uma mudança de cor do prompt por meio de um arquivo temporário

Estou me perguntando por que o seguinte script não funciona:

#!/bin/bash
read -p 'First lets write PROMPT.SH'
echo '#!/bin/bash'>prompt.sh
echo "export PS1='\e[1;31m\]\u@\h \W\$\e[0m\] '">>prompt.sh
read -p "Change Title and Prompt"
source prompt.sh
echo texttexttext
read -p "Now lets tidy up PROMPT.SH"
rm ./prompt.sh
read -p "That was the program"

O que estou tentando fazer é alterar o título da janela, o prompt e a cor do texto que normalmente consigo fazer,

PS1='\e[1;31m\]\u@\h \W\$\e[0m\] '

durante uma sessão regular do bash, mas não quando eu o adiciono a um script e depois executo o script.

Responder1

PS1é exibido apenas para prompts interativos. Não tem nada a ver com o prompt mostrado para read -p. A execução de um script bash, mesmo lendo a entrada, não é consideradainterativo.

Responder2

Não tenho certeza do que você está tentando fazer, mas acho que é uma configuração PS1para seu shell interativo a partir de um script. Dito assim, você não pode fazer isso. Em sistemas *nix e semelhantes ao Unix, as características/propriedades do processo são passadas de pai para filho, mas nunca o contrário. Por exemplo, se você definir seu PATHcomo include /fooe, em seguida, executar um script que tenta executar bar, ele será encontrado /foo/bar- mas se você alterar PATHum script, isso não afetará seu shell interativo. Da mesma forma para cde umask. Essas são diferenças em relação ao mundo do prompt de comando do Windows (lote).

Dito isto, há uma resposta e você já sabe disso. Se o seu script (o de 10 linhas) for chamado andy.sh, você poderá obter o efeito desejado digitando source andy.sh. Mas isso é um exagero bobo (a menos que você esteja fazendo isso apenas para praticar a redação do roteiro); apenas coloque

PS1='\e[1;31m\]\u@\h \W\$\e[0m\] '

em drew.she digite source drew.sh.

Mas também pesquise o aliascomando.

informação relacionada