Эффект котировок при настройке PS1

Я использую Ubuntu 16.04 LTS. У меня вопрос о настройке PS1 и использовании одинарных кавычек. Я тренируюсь, чтобы изменить подсказку. Итак, я последовал примеру в книге, затем я столкнулся с любопытством.

Пример ниже:

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

Я узнал, что одиночные кавычки создают специальные символы (например, $, ``, \ и т. д.) к общим символам.

Итак, я думаю, что подсказка над выражением должна выглядеть следующим образом:

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

Почему специальный символ ($) все еще работает в одиночных кавычках? [ ! d4]

1
задан 19 September 2017 в 15:39

3 ответа

Bash (и другие оболочки) не печатают PS1 as-is. Они интерпретируют его и отображают вывод. Например, Bash расширяет различные специальные коды, такие как \u, \w и т. Д., А затем (из руководства Bash, «Управление запросом»):

После того, как строка декодируется, она расширяется через расширение параметра, подстановку команд, арифметическое расширение и удаление цитат, при условии значения параметра оболочки promptvars (см. Bash Builtins).

из руководства Bash, Управление запросом (т. е. расширение переменной) означает, что строка, подобная $PWD в PS1, расширяется. Если вы хотите показать обычную $PWD в приглашении, выполните одно из следующих действий:

PS1='\$PWD '
# or
shopt -u promptvars
PS1='$PWD '
2
ответ дан 22 May 2018 в 18:19

Bash (и другие оболочки) не печатают PS1 as-is. Они интерпретируют его и отображают вывод. Например, Bash расширяет различные специальные коды, такие как \u, \w и т. Д., А затем (из руководства Bash, «Управление запросом»):

После того, как строка декодируется, она расширяется через расширение параметра, подстановку команд, арифметическое расширение и удаление цитат, при условии значения параметра оболочки promptvars (см. Bash Builtins).

из руководства Bash, Управление запросом (т. е. расширение переменной) означает, что строка, подобная $PWD в PS1, расширяется. Если вы хотите показать обычную $PWD в приглашении, выполните одно из следующих действий:

PS1='\$PWD ' # or shopt -u promptvars PS1='$PWD '
2
ответ дан 18 July 2018 в 06:35

Bash (и другие оболочки) не печатают PS1 as-is. Они интерпретируют его и отображают вывод. Например, Bash расширяет различные специальные коды, такие как \u, \w и т. Д., А затем (из руководства Bash, «Управление запросом»):

После того, как строка декодируется, она расширяется через расширение параметра, подстановку команд, арифметическое расширение и удаление цитат, при условии значения параметра оболочки promptvars (см. Bash Builtins).

из руководства Bash, Управление запросом (т. е. расширение переменной) означает, что строка, подобная $PWD в PS1, расширяется. Если вы хотите показать обычную $PWD в приглашении, выполните одно из следующих действий:

PS1='\$PWD ' # or shopt -u promptvars PS1='$PWD '
2
ответ дан 24 July 2018 в 18:38

Другие вопросы по тегам:

Похожие вопросы: