Usando cat para modificar ~ / .bash_profile parece remover __git_ps1 compulsoriamente

1

Eu quero que meu prompt exiba o ramo git atual quando estiver dentro de um diretório repo. por exemplo,

[desktop repo(master)]$

No meu terminal eu posso digitar:

cat <<EOF >> ~/.bash_profile
PS1='\[\e[0;32m\][\h \W\[\e[m\]$(__git_ps1 "(%s)")\[\e[0;32m\]]\$ \[\e[m\]'
EOF

Mas o texto anexado resultante em .bash_profile é:

PS1='\[\e[0;32m\][\h \W\[\e[m\]\[\e[0;32m\]]$ \[\e[m\]'

o método __git_ps1 não está presente no resultado. Se eu edito manualmente o .bash_profile com o vim, em seguida, source ~. / Bash_profile, a instrução PS1 contém o método __git_ps1 e funciona bem.

Esta declaração do gato é parte de um script maior de "bootstrapping", mas eu limpei todas as coisas irrelevantes. Eu implementei isso com sucesso no Ubuntu. Estou tentando executá-lo em uma VM do CentOS.

Obrigado!

    
por nograde 23.05.2014 / 02:20

1 resposta

2

Experimente cat << "EOF" , isso evita a expansão da função do dólar e das cotações.

    
por 23.05.2014 / 02:26