Моя система имеет Сервер Ubuntu 12,04 установленных в текстовом режиме (никакой X Window) и командная строка, которая определяется в моем ~/.bashrc
файл следующей строкой:
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w \[\033[01;35m\] \[$(date "+%a %F %T %Z")\] \[\033[00m\]\$ '
Это похоже:
username@hostname:~ Wed Jul 2015-07-22 18:00:12 JST $
Если я нажимаю, ↑ предыдущая команда в моей истории отображена перед вышеупомянутым promp, например:
username@hostname:~ Wed Jul 2015-07-22 18:00:12 JST $ vim /home/username/~/.bshrc
Если я нажимаю в второй раз, предыдущая команда в, история отображена, но это по записанному на некоторой части моей подсказки, т.е.:
username@hostname:~ Wedsudo su
Отметьте это Jul 2015-07-22 18:00:12 JST $
по записанному!
Кроме того, это не всегда по записанному второй командой в истории. Некоторое время, первое, второе, треть, предыдущие команды отображены правильно перед полной подсказкой, один за другим, и внезапно дальше предыдущей командой, по записанному на последней части командной строки!
Всегда, последняя часть командной строки по записанному после дня недели, т.е. Wed
и это положение фиксируется, если я нажимаю ↑ или ↓.
Если я выполняю команду или нажимаю Ctrl+C, командная строка отображена полностью снова.
Кто-либо может помочь решить эту проблему?
Это перестало работать, потому что Вы включили $(date ...)
в \[
и \]
. Удалите их, и это должно работать как ожидалось.
\[ ... \]
, в подсказке, используется, чтобы сказать удару, что символы в не добавят к продолжительности подсказки. Вам нужно это вокруг терминальных Escape как \033[01;32m
, потому что это только делает следующий текст другим цветом, но те 8 байтов не добавят к продолжительности подсказки; их вместо этого ест терминал.
На ноте стороны; удар может уже поместить дату в подсказку для Вас, не имея необходимость работать эти date
команда.
PS1='... \D{%a %F %T %Z} ...'
См. http://www.gnu.org/software/bash/manual/bash.html#Controlling-the-Prompt