Я использую Ubuntu 16.04 LTS. У меня вопрос по настройке PS1 и использованию одинарных кавычек. Я практиковался, чтобы изменить подсказку. Итак, я последовал примеру из книги, а затем столкнулся с любопытством.
Пример ниже:
user1@myubuntu:~$ PS1='$PWD '
/home/user1
Я узнал, что одинарные кавычки делают специальные символы (например, $
, ``
, \
и т. Д.) Общими символами.
Итак, я думаю, что подсказка над утверждением должна выглядеть примерно так:
user1@myubuntu:~$ PS1='$PWD '
$PWD
Почему специальный символ ($
) по-прежнему работает в одинарных кавычках?
Bash (и другие оболочки) не печатает PS1
как есть. Они интерпретируют его, и дисплей вывод. Bash, например, разворачивает различные специальные коды как \u
, \w
, и т.д., и затем ( из руководства Bash, Управление Подсказкой ):
После того, как строка декодируется, она расширена через расширение параметра, замену команды, арифметическое расширение и удаление кавычки согласно значению
promptvars
опция оболочки (см. Bash Builtins).
расширение Параметра (т.е. переменное расширение) означают, что строка как $PWD
в PS1
расширена. Если Вы хотите показать плоскость $PWD
в подсказке, сделайте любой из:
PS1='\$PWD '
# or
shopt -u promptvars
PS1='$PWD '