A variável PS1 padrão na minha máquina (Kubuntu 13.10) é a seguinte:
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$
Estou procurando uma referência de como a variável $ PS1 funciona que, no mínimo, permita-me entender a variável PS1 acima.
PS1
em um terminal, por exemploPS1="How r u, \u?"
. A alteração só durará até você fechar o terminal.Respostas:
Referências
Até o momento, não houve uma única referência para tudo o que pode aparecer em um prompt do Bash - mas como é um recurso que evoluiu ao longo de décadas e provavelmente varia de uma distribuição para outra, talvez seja pedir demais. Tentei resumir o que achei mais útil aqui.
Este guia é o mais completo, mas é muito longo e divagante. Algumas das seções mais úteis:
\[
e\]
é necessária.Este guia explica como
${}
funciona o Bash em geral, e esta pergunta Ask Ubuntu explica um pouco mais sobre como isso funcionadebian_chroot
.Entre esses, acho que todos os personagens da variável padrão do Ubuntu PS1 são explicados.
Explicação do prompt do Ubuntu
Existem três partes no prompt:
\[\e]0;\u@\h: \w\a\]
define a barra de título de uma janela xterm:\[
inicia uma seção de caracteres não imprimíveis\e]0;
é a sequência de escape para 'set xterm title' (acredito que números diferentes de 0 definirão outras propriedades xterm, embora eu não tenha testado isso)\u@\h: \w
a título de uso (ver abaixo para\u
,\h
e\w
)\a
marca o final do título\]
marca o final de caracteres não imprimíveis${debian_chroot:+($debian_chroot)}
expande para o valor de $ debian_chroot entre parênteses se $ debian_chroot estiver definido. Veja esta pergunta para mais informações sobre $ debian_chroot.\u@\h:\w\$
é o próprio prompt:\u
expande para o nome de usuário atual\h
expande para o nome do host atual\w
expande para o diretório de trabalho atual\$
expande#
para raiz e$
para todos os outros usuáriosfonte
De acordo com o Manual de Referência do Bash ,
PS1
é:Algumas outras boas referências podem ser:
Prompt PS1 explicado para Linux / Unix
O que "$ {debian_chroot: + ($ debian_chroot)}" faz no meu prompt de terminal?
Bash Shell PS1: 10 exemplos para fazer seu prompt de Linux como Angelina Jolie
fonte
\[
e\]
, no entanto - você tem alguma referência a isso?\[
- inicie uma sequência de caracteres não imprimíveis, que podem ser usados para incorporar uma sequência de controle de terminal no prompt;\]
- finalize uma sequência de caracteres não imprimíveis. Basta levar o seu tempo e ler atentamente;)ss64.com parece ter a melhor referência que eu encontrei.
Explica as seguintes variáveis:
O
\[ ... \]
define uma série de caracteres não imprimíveis. Eles são necessários para acompanhar a posição do cursor corretamente.O
\e
prompt inicia uma sequência de escape. Mais sobre isso aqui (observe "Esc" nessa página é a\e
sequência).tput
para obter o código de escape para você.${debian_chroot:+($debian_chroot)}
é expansão de parâmetro. Veja aqui($debian_chroot)
se$debian_chroot
está definido caso contrário nada.fonte