Destacar separadores de caminho no PS1

4

Eu quero fazer algo assim no Bash:

como formatar o caminho em um prompt zsh?

Mas tudo que eu tento resulta no PWD sendo fixado no primeiro diretório em que inicio o meu terminal. Estranhamente, eu também tenho uma função no meu PS1 para colocar a ramificação do git atual no prompt e que sempre atualizações, então estou confuso sobre o porquê o PWD fica preso. Meu prompt atual está aqui por acaso.

Eu tentei substituir \w por $(pwd|grep --color=always /) , mas isso fica preso. Eu também tentei fazer isso usando uma substituição de string bash, mas isso não funciona. ${PWD////$bldred/$bldblu} ($ bldred e $ bldblu estão definidos no meu prompt.sh).

    
por Ibrahim 22.11.2012 / 05:27

2 respostas

1

Ao incluir uma variável dinâmica em seu prompt, você precisa citá-la.

Eu não entendo muito bem algumas coisas do PROMPT_COMMAND, mas tente PS1='${PWD////'"$bldred/$bldblue"'} \$' e veja se funciona.

    
por 22.11.2012 / 07:51
1

A última parte do script:

case "$TERM" in
xterm*|rxvt*)
    PS1=...
...

é inútil quando você define $PROMPT_COMMAND - essa versão de $PS1 será executada apenas uma vez. Então você nunca verá uma atualização de título após a primeira execução desse script. Você precisa adicionar a mudança de título em $PROMPT_COMMAND com todo o resto.

Mova o switch dentro do ramo verdadeiro de

if [ "$color_prompt" = yes ]; then

e construa para diferentes $PROMPT_COMMANDS com base nisso. Funciona para mim.

    
por 22.11.2012 / 07:52

Tags