Atualmente, tenho o meu bash PS1
definido para algo como isto:
PS1="\[\`if [[ \$? = "0" ]]; then echo '\e[32m\h\e[0m'; else echo '\e[31m\h\e[0m' ; fi\`:\w\n\$ "
Como posso mostrar o caminho absoluto em vez do caminho relativo (por exemplo, em /home/dave/dir
vez de ~/dir
)?
/home/dave/dir
e~/dir
são caminhos absolutos, o segundo usa uma abreviação para o diretório inicial. Um caminho relativo é um caminho que é relativo ao seu diretório atual (por exemplo../dir
) em vez de iniciar na raiz (/
).\u@\H[\w]:~\$
makesuser@host[~/path]:~$
Respostas:
Basta substituir
\w
por\$PWD
:De qualquer forma, se você se importar com uma pequena dica, eu escreveria algo como:
fonte
$PWD
é avaliado no momento da tarefaPS1
, e não em cada chamada. No entanto , se você escapar do cifrão, ele funcionará -\$PWD
. Com isso, o cifrão é um cifrão no momento da atribuição e a avaliação da variável ocorre em cada prompt. +1 para você.Coloque em sua casa
.bashrc
fonte
\w
fornece o caminho completo, enquanto\W
fornece apenas o diretório. Veja "Sequências de escape do prompt do Bash"no ps1 do bash; -W deve ser relativo e -w absoluto; portanto, acima você já deve ter o absoluto ?!
http://wiki.archlinux.org/index.php/Color_Bash_Prompt
fonte
W
mostra apenas o nome do diretório atual,w
mostra o caminho completo, mas ainda usa caminhos relativos.Humm ~ / dir é um caminho absoluto, mas usando um "atalho". Por exemplo, se você
cd /usr/local
solicitar, provavelmente exibirá o caminho completo de / usr / local. Enfim, você já tem um caminho completo :-)Mas provavelmente sua pergunta correta é como exibir o caminho completo sem nenhum atalho como ~?
No entanto, eu não sei uma resposta para essa e, olhando para o homem, parece ter uma (pelo menos documentada).
fonte
Execute em
pwd
vez de usar\W
.Versão simples:
Usando isso no seu código:
fonte