Я выполняю 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. (Я заметил обновление в очереди, которая устанавливает, поскольку я пишу это.)
Ваша подсказка имеет ошибку в своем определении. Это должно иметь форму:
PS1='\[non-printing-sequence\]printing-sequence'
Например:
PS1='\[\033[1;36m\]\u\[\033[0m\]@\[\033[1;34m\]\h\[\033[0m\]\$ '
который показал бы голубым именем пользователя и синим именем хоста.
Так или иначе Вы получаете литерал \[
в выводе. Проверьте свои литеральные и завершенные скобки, чтобы удостовериться, что они корректны.
/etc/sysconfig/bash-prompt-screen
имеет дополнительное '\'
Это означает, что мы должны сократиться, это к следующему для создания дополнительного '\' уходит!
#!/bin/bash
echo -n $'\033'"_${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"$'\033\\'
Примечание: хорошие новости! Это - только экранная установка.