Поведение символа WERASE при обработке терминала в готовом режиме жестко запрограммировано , по крайней мере, в Linux:
if (kill_type == WERASE) {
/* Equivalent to BSD's ALTWERASE. */
if (isalnum(c) || c == '_')
seen_alnums++;
else if (seen_alnums)
break;
}
Таким образом, слова представляют собой буквы, цифры и подчеркивание. Так будет всегда в терминале Linux, когда приложение, которое выполняет свою собственную обработку в режиме готовой обработки, не работает.
версия readline (используемая bash и другими), кажется, немного отличается от версии ядра, но также кажется жестко запрограммированной :
Слова состоят из букв и цифр.
Но это не похоже на то, что bash
на самом деле делает для меня: foo + bar ^ W
стирает все, а не только bar
. Более подробная информация об этом находится здесь .
Если вы не хотите использовать команду NTP
, посмотрите, работает ли это как альтернатива для вас:
date -s "$(curl -s --head http://google.com | grep ^Date: | sed 's/Date: //g') -0500"
**Примечание: Время, взятое из Google, указано в GMT, поэтому -0500
представляет собой числовой часовой пояс, в котором вы находитесь. Я нахожусь в US/EST, поэтому -0500
, пожалуйста, измените ваше время в соответствии с вашим соответствующим часовым поясом, и это должно исправить любое "смещение местного времени", которое вы можете испытывать.
Если это не происходит каждый раз, когда вы выходите из системы и снова входите, вы можете попробовать установить это в .bash_profile
или /etc/profile
, чтобы он запускался первым каждый раз, когда вы входите в систему, это не "исправление", а скорее "хак".