Como posso exibir o caminho absoluto no prompt do bash?

41

Atualmente, tenho meu bash PS1 configurado para algo assim:

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, /home/dave/dir em vez de ~/dir )?

    
por David B 22.10.2010 / 10:52

5 respostas

42

Basta substituir \w pela variável de ambiente PWD :

PS1="\[\'if [[ \$? = "0" ]]; then echo '\e[32m\h\e[0m'; else echo '\e[31m\h\e[0m' ; fi\':\$PWD\n\$ "

De qualquer forma, se você se importar com uma pequena dica, eu escreveria algo como:

PS1='\['[ $? = 0 ] && X=2 || X=1; tput setaf $X'\]\h\['tput sgr0'\]:$PWD\n\$ '
    
por 22.10.2010 / 16:56
21

Coloque na sua casa .bashrc

PS1='\u@\h:\w\$ '
    
por 18.05.2011 / 16:30
0

no ps1 do bash; -W deve ser relativo e -w absoluto, portanto, no acima, você já deve ter o valor absoluto?!

link

    
por 22.10.2010 / 11:18
0

Humm ~ / dir é um caminho absoluto, mas usando um "atalho". Por exemplo, se você executar cd /usr/local , seu prompt provavelmente exibirá o caminho completo de / usr / local. Então, você já tem um caminho completo: -)

Mas provavelmente a sua pergunta correta é como exibir o caminho completo sem atalhos como ~?

No entanto, eu não sei a resposta para isso e olhando para o homem, parece ter um (pelo menos documentado).

    
por 22.10.2010 / 15:41
-1

Execute pwd em vez de usar \W .

Versão simples:

export PS1="\'pwd\' $ "

Usando isso no seu código:

export PS1="\[\'if [[ \$? = "0" ]]; then echo '\e[32m\h\e[0m'; else echo '\e[31m\h\e[0m' ; fi\':\'pwd\'\n\$ "
    
por 22.10.2010 / 16:02