Одна из вещей, которая сводит меня с ума в командной строке под MS-Windows - это порядок, в котором оболочка Windows (как стандартная, так и PowerShell) извлекает команды из истории при использовании клавиш со стрелками вверх и вниз.
Стандартный способ, который мне понравился, как это делается практически во всех других оболочках мира, заключается в том, что последняя команда помещается в стек истории, а затем нажатие вверх возвращает последнюю команду, которую я выполнил, «вверх». снова получит тот, что был до этого, и так далее. Если вы выбираете команду из истории и отправляете ее снова, команда копируется в верхнюю часть стека, и если вы нажимаете вверх в следующем приглашении, вы можете увидеть эту последнюю команду, а затем команду, предшествующую последней. Если после просмотра истории вы нажмете «вниз» после самой последней команды в стеке истории, вы вернетесь к пустому приглашению (или к тому, что у вас было до того, как вы начали просматривать историю).
В оболочке Windows это работает странно иначе: если у вас есть 3 команды в истории - например, давайте назовем их «A», «B» и «C» - и вы используете клавишу со стрелкой вверх, чтобы выбрать команду «B» и выполнить снова, а затем снова используйте клавишу со стрелкой вверх в следующем приглашении, оболочка отобразит «B». Но это не последняя команда, которую вы выполнили (хотя «B» действительно была снова скопирована в стек истории), так как если вы снова нажмете «вверх», вам будет показано «A», а не «C». Если вы перейдете вниз (к более поздним записям), вы снова увидите «B», затем «C», затем снова «B», что было последней введенной командой - но вы также не можете идти дальше: пути назад нет в пустое приглашение, кроме удаления всего, что у вас есть в строке или нажатия CTRL-C.
Мой вопрос - есть ли настройки, которые можно установить, чтобы изменить это поведение?
Я знаю о возможности просто получить bash или что-то в этом роде и использовать его в Windows, но из-за внешних ограничений (например, для этого мне нужно написать свои скрипты), я должен работать в PowerShell или другой Windows оболочка, которая может вызывать скрипты PowerShell.