BASH: редактирование истории, как в Kornshell

#bash

#bash

Вопрос:

Допустим, я выполняю следующую команду либо в BASH, либо в Kornshell:

 $ foo | while read line
> do
>    echo "Line = '$line'"
> done
  

Если я vi установил и отредактировал его в Kornshell, я получаю:

 foo | while read line
do
     echo "Line = '$line'"
done
  

Если я vi установил и отредактировал его в BASH, я получаю:

 foo | while read line;do;    echo "Line = '$line'";done
  

Есть ли способ получить редактирование командной строки в BASH так же, как работает Kornshell?

Ответ №1:

Вам нужно включить опцию lithist (буквальная история), которая указывает bash сохранять новые строки:

 $ shopt -s lithist
  

Комментарии:

1. Спасибо. Я знал, что это должна быть одна из shopt настроек, но понятия не имел, какая именно.

Ответ №2:

Вам нужны две вещи:

$ shopt -s cmdhist # Это включено по умолчанию, поэтому, вероятно, не нужно
$ shopt -s lithist # По умолчанию отключено