Efeito de citações ao definir PS1

1

Estou usando o Ubuntu 16.04 LTS. Eu tenho uma pergunta para definir o PS1 e usar aspas simples. Eu tenho praticado para mudar um prompt. Então, eu segui um exemplo no livro, então eu enfrentei uma curiosidade.

O exemplo está abaixo:

user1@myubuntu:~$ PS1='$PWD '
/home/user1 

Aprendi que as aspas simples criam caracteres especiais (como $ , '' , \ , etc.) em caracteres gerais.

Então, acho que o prompt acima da declaração deve ser como abaixo:

user1@myubuntu:~$ PS1='$PWD '
$PWD

Por que o caractere especial ( $ ) ainda funciona entre aspas simples?

    
por JinHyeonSa 19.09.2017 / 14:15

1 resposta

2

Bash (e outros shells) não imprime PS1 como está. Eles o interpretam e exibem a saída. O Bash, por exemplo, expande vários códigos especiais como \u , \w , etc. e, em seguida, ( do manual de Bash, Controlando o Prompt ):

  

Depois que a string é decodificada, ela é expandida por meio da expansão de parâmetro,   substituição de comando, expansão aritmética e remoção de cotação, assunto   para o valor da opção promptvars shell (consulte Bash Builtins ).

Expansão de parâmetros (isto é, expansão de variáveis) significa que um string como $PWD em PS1 é expandida. Se você quiser mostrar um $PWD simples no prompt, faça o seguinte:

PS1='$PWD '
# or
shopt -u promptvars
PS1='$PWD '
    
por muru 19.09.2017 / 14:35