o bash executa expansões no prompt; apenas certifique-se de escapar deles.
PS1='\h:$(pwd)\n$'
Eu gostaria de remover o til da exibição dentro da variável PS1.
Minha string PS1 atual:
PS1="\h:\w\n$"
E o prompt é assim:
lnx-hladky:/tmp/plugtmp
$
Eu não gosto que o diretório $ HOME seja exibido como til. Isso pode ser evitado?
Isso causa problemas, por exemplo:
lnx-hladky:~/DOC
$
Documentação diz:
\w : the current working directory, with $HOME abbreviated with a tilde
\W: the basename of the current working directory, with $HOME abbreviated with a tilde
Existe alguma possibilidade de evitar que o $ HOME seja abreviado com um til?
Encontrei uma maneira de contornar, mas sinto que é supercomplicada:
PROMPT_COMMAND='echo -ne "\e[4;35m$(date +%T)\e[24m$(whoami)@$(hostname):$(pwd)\e[m\n"'
PS1=$
Alguém pode propor uma solução melhor? Tenho a sensação de que não é normal executar tantos comandos apenas para obter uma resposta rápida. (date, whoami, hostname, pwd).
Você não precisa executar tantos comandos quanto mostrou no seu exemplo. bash
fornece atalhos para a maioria das coisas que você mencionou.
Seu exemplo:
PROMPT_COMMAND='echo -ne "\e[4;35m$(date +%T)\e[24m$(whoami)@$(hostname):$(pwd)\e[m\n"'
PS1=$
pode ser reescrito como:
PS1='\e[4;35m\t\e[24m\u@\h:\w\e[m\n'
Onde \t
mostra a hora (no formato de 24 horas), \u
mostra o nome de usuário atual, '\ h' mostra o nome do host - a página bash
man discute estes e o resto das fugas disponíveis para o seu prompt.
Mesmo se você expandir o ~
para o caminho completo, se não souber qual usuário está executando o comando e estiver trocando usuários regularmente, poderá criar problemas com permissões de arquivo ou executáveis.
Estou usando a configuração abaixo no meu arquivo .bash_profile
$ export PS1='\e[1;34m\D{%T %d.%m.%Y} \[3[00;39m\]\u\[3[00;32m\]@$IP:\[3[00;33m\]$(pwd)/\n\$\[3[00m\] '
21:40:08 14.12.2017 [email protected]:/home/vmware/Downloads/
Tags command-line bash unix