O script funciona definindo o prompt interativo do shell para uma string que inclui códigos de controle para manipular o título da janela xterm
. Cada vez que o prompt do shell é exibido, os códigos de controle para alterar o título da janela são gerados.
Mas é claro que, dentro de um script, nenhum prompt interativo é exibido, portanto, esses comandos não têm efeito observável (embora se você iniciasse outro shell interativo a partir do script, você poderia ver a alteração do título da janela). E como nenhum script pode alterar o ambiente de seu processo pai, a alteração é perdida quando o script é encerrado.
De qualquer forma, a partir do seu script, você pode imprimir os códigos de controle diretamente.
printf '3]2;Hello\a'
Isso altera o título da janela uma vez, mas se qualquer outro programa a alterar posteriormente, seu título antigo será perdido. O truque para alterar o seu prompt é generalizado porque alguns programas populares no passado, muitas vezes mudam o título da janela logo depois que você mudou para o seu gosto (embora eu não acho que isso é um problema comum por mais tempo). A desvantagem é que, se algo tiver um motivo genuíno para alterar o título da sua janela, isso será substituído, assim que seu shell exibir seu prompt novamente.
Se você quiser que o código altere o prompt do seu shell atual, não será possível colocá-lo em um script regular; mas você pode source
do arquivo de script ou colocar os comandos em uma função de shell (normalmente feito em seu perfil Bash para torná-lo persistente).
A propósito, o prompt do Bash deve incluir códigos de controle adicionais para informar ao Bash quando uma parte do prompt é efetivamente com largura zero, no que se refere ao cálculo da largura de exibição do prompt. Você descobrirá que o agrupamento de linha é errático se você digitar um comando longo e, em seguida, precisar retroceder, por exemplo; O Bash tentará redesenhar o prompt, mas o fará no lugar errado, porque acha que os códigos de controle de tela contribuem para a largura do prompt. Você desejará adicionar esses códigos de controle \[
e \]
Bash ao redor deles.
PS1="$ORIG\[$TITLE\]"
(As chaves realmente não contribuem com nada e dificultam a legibilidade, então eu as tirei.)