Atualiza variáveis 'mudando' toda vez que PS1 é chamado, ou seja, todo novo prompt [duplicado]

0

A razão pela qual eu preciso fazer isso é ter variáveis de 'atualização' no meu PS1. Eu gostaria de ter o meu período de tempo em toda a largura do terminal, não envolvendo ou indo para uma nova linha. Para isso, eu já encontrei uma maneira de fazê-lo funcionar, mas esse método requer que eu recarregue o bash todas as vezes. Aqui está o que eu gostaria que parecesse:

|me::awesome| --------------------------------------------------------- ~/.config/awesome
$

Depois disso, quando eu fizer um cd em um novo diretório, ele ficará assim:

|me::themes| -------------------------------------------------------------------------
------ ~/.config/awesome/themes
$

Mas quando eu corro

exec bash

ele alterará com sucesso todos os valores e ficará assim:

|me::themes| --------------------------------------------------- ~/.config/awesome/themes
$

Então, estou procurando uma maneira de incorporar variáveis variáveis em minha variável PS1, que eu gostaria de atualizar toda vez que um novo prompt fosse chamado. Isto é o que meu .bashrc parece no momento:

mytest=$PWD
mynext="$(basename $PWD)"
mylength=$((${#mytest}+${#mynext}))
length=$(($mylength+6))
PS1='|me::\W| $(printf "\u2500%.0s" $(seq $length $(tput cols))) \w\n\$'

Eu também tentei colocar as variáveis em um arquivo de script de shell separado e executá-lo dentro do meu PS1, da seguinte maneira:

#/home/me/.PS1.sh
mytest=$PWD
mynext="$(basename $PWD)"
mylength=$((${#mytest}+${#mynext}))
length=$(($mylength+6))
echo "|me::\W| $(printf "\u2500%.0s" $(seq $length $(tput cols))) \w\n\$"

#/home/me/.bashrc
PS1=$(/home/me/.PS1.sh)
    
por 7z. 11.02.2016 / 13:05

1 resposta

0

suas variáveis são avaliadas apenas na primeira vez, você deve colocá-las dentro da ps1 para serem tratadas literalmente pela primeira vez e serem avaliadas após a execução do comando.

PS1='|me::\W| $( mytest=$PWD;mynext="${PWD##*/}";  mylength=$((${#mytest}+${#mynext})) ; length=$(($mylength+6)) ; printf "\u2500%.0s" $(seq $length $(tput cols))) \w\n\$'

você pode alterar apenas 6 se adicionou material ao ps1

    
por 11.02.2016 / 13:24

Tags