Ну, я чувствую себя немного глупо, но… демон bluetooth просто не работал !
Итак, я решил это с помощью:
systemctl enable bluetooth
Вуаля!
Как Тердонговорит , вы не можете вернуться к исходной конструкции переменной, если она была построена с использованием значений других переменных.
Однако вы можете увидеть его содержимое, не интерпретируемое терминалом или даже самой оболочкой, по крайней мере, в Bash и Zsh:
printf '%q\n' "$PS1"
Это позволит экранировать все символы, которые в противном случае имели бы другой эффект; вы можете использовать это, чтобы восстановить дословное содержание.
Другой подход состоит в том, чтобы вывести содержимое переменной куда-нибудь, кроме терминала (напрямую ); например
printf %s "$PS1" | od -vtc
покажет содержимое переменной, символ за символом, заменив управляющие символы мнемоникой (nl
, esc
, sp
... ).
Не не используйте здесь echo
, который расширяет \x
последовательности и добавляет дополнительный символ новой строки.
В вашем случае
%(?:%{%}➜ :%{%}➜ ) %{$fg[cyan]%}%c%{$reset_color%} $(git_prompt_info)
похоже, что это может быть в точности дословное содержимое вашей PS1
переменной :там нет терминальных -интерпретируемых escape-последовательностей, они получены косвенно через массив fg
и переменную reset_color
. Предполагая, что опция promptsubst
установлена, они будут расширены, когда PS1
используется для отображения подсказки, но не при расширении echo $PS1
.
Содержимое переменной включает расширенные значения всех используемых вами переменных. Вы не можете вернуться к оригиналу, потому что оригинал используется только для расширения значений.
Например, рассмотрим это:
fooVar="foo"
barVar="$fooVar : bar"
К тому времени, когда оболочка схватывается barVar
, она уже расширяется $foovar
. Он не устанавливает barVar
на $fooVar : bar
, он устанавливает его на foo : bar
. Вернуться к "$fooVar : bar"
невозможно, переменная $vooVar
была расширена перед присвоением значения новой переменной barVar
. В этом весь смысл использования переменных, ведь :их можно рассматривать как их значение.
Итак, нет никакого способа загнать джина обратно в бутылку и «нерасширить» переменные, которые вы уже расширили и использовали. Единственный способ увидеть, какие переменные использовались для формирования вашего PS1
, — это отследить различные файлы, в которых он устанавливается.