Experimente cat << "EOF"
, isso evita a expansão da função do dólar e das cotações.
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!
Tags shell here-document