История команд
Все командные процессоры запоминают введенные пользователем команды (их список называется историей команд). Во время сеанса работы командный процессор хранит историю команд в памяти, а по окончании работы записывает их в файл на диск. Файл истории команд хранится в домашнем каталоге пользователя. В sh, csh, tcsh он называется ~/.history, в bash - ~/.bash_history, в ksh - ~/.shhistory, а в бесплатной версии Korn Shell (public domain Korn shell - pdksh) его по умолчанию нет вообще.
Многие командные процессоры позволяют повторить вызов ранее введенной команды по ее номеру или начальным буквам. О том, как это делать, подробнее сказано ниже в разделе "Повторение и модификация ранее введенных команд".
Имейте в виду, что по умолчанию файл истории команд может быть доступен для чтения не только тому, кто вводил команды, но и другим пользователям. Чтобы не сделать систему уязвимой, следует избегать ввода каких бы то ни было паролей в командной строке. Например, возможно вызвать браузер lynx или программу доступа к серверу баз данных mysql, указывая пароль в командной строке:
lynx ftp://user:password@URL mysql -u root -p password
Так как эти команды сохранятся в файле истории вместе с другими, кто-то потом сможет прочесть их и узнать какие-то из ваших паролей. Файл истории команд ограничен по размеру. По умолчанию, bash хранит 500 команд, tcsh - 1000, csh - 100, sh - в зависимости от версии. Часто sh не создает файл .history вовсе, и дает доступ только к командам, которые были введены в течение текущего сеанса работы с ним. Можно изменить число хранимых команд, указав иное значение переменной, в которой оно хранится.
shell | переменная | значение по уполчанию |
sh | HISTSIZE | не определено |
csh | history | 100 |
ksh | HISTSIZE | 128 |
bash | HISTFILESIZE | 500 |