Вы не используете bash
, вы используете sh
. Что это означает, зависит от вашей системы, от Debian и Ubuntu , /bin/sh
- это символическая ссылка на dash
так что это оболочка по умолчанию. dash
нет нужной вам функциональности, вам нужно переключиться на другую оболочку, такую как bash
или zsh
. Вы можете сделать это с помощью команды chsh
:
$ chsh
Password:
Changing the login shell for terdon
Enter the new value, or press ENTER for the default
Login Shell [/bin/sh]: /bin/bash
Теперь на каждом новом терминале, который вы открываете, будет работать bash
а стрелка вверх должна отображать историю.
Даже в системах, где sh
- это ссылка на bash
, они не эквивалентны. Как объяснил man bash
:
If bash is invoked with the name sh, it tries to mimic the startup
behavior of historical versions of sh as closely as possible, while
conforming to the POSIX standard as well. When invoked as an interac‐
tive login shell, or a non-interactive shell with the --login option,
it first attempts to read and execute commands from /etc/profile and
~/.profile, in that order. The --noprofile option may be used to
inhibit this behavior. When invoked as an interactive shell with the
name sh, bash looks for the variable ENV, expands its value if it is
defined, and uses the expanded value as the name of a file to read and
execute. Since a shell invoked as sh does not attempt to read and exe‐
cute commands from any other startup files, the --rcfile option has no
effect. A non-interactive shell invoked with the name sh does not
attempt to read any other startup files. When invoked as sh, bash
enters posix mode after the startup files are read.