web-dev-qa-db-fra.com

PS1 = '$ (PWD)' Pourquoi cela fonctionne et pourquoi est-ce différent de PS1 = $ (PWD)

Pourquoi quand je saisis cette commande, l'invite change dans mon répertoire?

PS1='$(pwd)'

J'utilise des guillemets simples, ce qui signifie aucune interpolation, a.k.a echo '$(pwd)' - → $(pwd)

En outre, disons que nous avons clarifié pourquoi cela fonctionne ... Pourquoi cela fonctionne-t-il différemment de PS1=$(pwd)? (pas de citations du tout)

Par différents, je veux dire que si j'utilise les guillemets, l'invite continuera à passer à mon répertoire actuel lorsque je navigue dans le terminal. Mais si je n'utilise pas de guillemets, l'invite restera toujours le répertoire que j'étais lorsque je suis entré à la commande PS1=$(pwd)

pourquoi?

18
HashWizard

Parce que sans les citations, le $ (PWD) est évalué lorsque PS1 est défini. Avec les citations, l'évaluation de $ (PWD) est reportée jusqu'à ce que l'invite soit affichée.

Sans les citations, la PS1 est définie sur le répertoire actuel au moment de l'heure PS1. Avec les citations simples, le PS1 est défini sur $ (PWD), ce qui signifie qu'il évaluera et imprimera le répertoire actuel à chaque fois que l'invite est affichée.

7
farhangfarhangfar