«не удается найти crtc для вывода VGA-0» из xrandr

 PS1="\`если [ \$? = 0 ]; то... фи\`
 

Обновление: я попробовал простую "$()", но это не сработало. И теперь я еще больше озадачен, потому что если добавить косую черту, это работает - "\$()".

\ — это обратная, а не прямая косая черта.

Вам нужно экранировать здесь $ по той же причине, по которой вы избежали обратных кавычек в первом фрагменте: потому что в противном случае подстановка команды разворачивается немедленно, при установке PS1 , а не когда PS1 используется для создания подсказки.

Лучше использовать одинарные кавычки вокруг присваивания, они предотвратят расширение переменных и подстановку команд для всей строки.

PS1='$(if [ $? != 0 ]; then echo -e "\[\e[1;31m\][boom]\[\e[0m\] "; fi)\u@\h \w\$ '

Обратите внимание, что вам нужно заключить escape-коды в \[ ... \], чтобы сообщить bash, что они не печатаются и что он не должен учитывать их при вычислении ширина подсказки (упоминается вскользь в мануале). (Я не знаю, может ли Bash правильно работать с графическими символами, которые вы использовали, и я не могу проверить.)

1
06.10.2015, 22:37
0 ответов

Теги

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