На Экране GNU Повторно вызванная команда истории удара отображает одну позицию символа слева от фактического местоположения

Я выполняю Red Hat 5 (2.6.18-194.26.1.el5) 32-разрядных.

Проблема - то, что, когда я повторно вызываю любую предыдущую команду в истории удара, первый символ в команде сразу отображен после приглашения оболочки, без любого прошедшего пространства, likeso:

\[me@mymachine tmp]$man mysql

Если я ввожу Ctrl-C и перепечатываю команду, это смотрит likeso:

\[me@mymachine tmp]$ man mysql

Это делает повторно вызывание команды и редактирование его прежде, чем повторно ввести реальную боль. В основном, если я пытаюсь отредактировать повторно вызванную команду, мои изменения происходят одна позиция символа налево (я верю) того, что я вижу на экране. Это немного утомительно для описания и, кажется, только происходит с командами с большим количеством аргументов.

ОБНОВЛЕНИЕ: содержание/etc/sysconfig/bash-prompt-screen,

1 #!/bin/bash
2 echo -n $'\033'"_${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"$'\033\\\\'

и содержание/etc/bashrc,

 24   screen)
 25     if [ -e /etc/sysconfig/bash-prompt-screen ]; then
 26       PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen
 27     else
 28     PROMPT_COMMAND='echo -ne "\033_${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\033\\"'
 29     fi
 30     ;;

Я имею, отключают быстрый экран удара путем переименования его - это зафиксировало его. Совершенно возможно, что существует фиксация к строке быстрой подсказки удара в последней версии экрана для RHEL 5. Ошибка замечена в соответствии с Экранизацией 4.00.03 (FAU) 23 октября 06. (Я заметил обновление в очереди, которая устанавливает, поскольку я пишу это.)

1
задан 24.10.2013, 13:54

2 ответа

Ваша подсказка имеет ошибку в своем определении. Это должно иметь форму:

PS1='\[non-printing-sequence\]printing-sequence'

Например:

PS1='\[\033[1;36m\]\u\[\033[0m\]@\[\033[1;34m\]\h\[\033[0m\]\$ '

который показал бы голубым именем пользователя и синим именем хоста.

Так или иначе Вы получаете литерал \[ в выводе. Проверьте свои литеральные и завершенные скобки, чтобы удостовериться, что они корректны.

1
ответ дан 17.12.2019, 00:26
/etc/sysconfig/bash-prompt-screen 

имеет дополнительное '\'

Это означает, что мы должны сократиться, это к следующему для создания дополнительного '\' уходит!

#!/bin/bash
echo -n $'\033'"_${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"$'\033\\'

Примечание: хорошие новости! Это - только экранная установка.

0
ответ дан 17.12.2019, 00:26

Теги

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