Кажется, я обнаружил, что файл ~/.bash_history
не содержит того, что отображается при использовании стрелки вверх. Я нашел это, выполнив команду подобным образом
smbclient -L 10.2.10.240 -umyuser -p"mypassword on the command line is bad"
Эта команда на самом деле неверна, есть ошибка, -u
фактически должна быть -U
, и поэтому эта команда не выполнена.
Однако я также понял, что это было плохо, потому что он помещает ваш пароль в историю, я вошел в .bash_history
, и что было интересно, так это то, что в нем нет ошибки. Он имеет только
smbclient -L 10.2.10.240
и все. Но это было бы странно, если вы используете стрелку вверх, вы можете редактировать всю команду , включая ошибки.
Итак, вопрос в том, почему существует разница между тем, что находится в .bash_history
, и тем, что показывает стрелка вверх? Где живут данные со стрелкой вверх?
Прежде чем вы укажете на это; это довольно удобно в этом случае, потому что это предотвращает сохранение моего пароля, но не потому, что он делает это, я также проверил его с правильными параметрами, а затем он действительно сохраняет всю команду, включая пароли и все.
Файл ~/.bash_history
обновляется только при закрытии / выходе из терминала. Пока вы находитесь в терминале, вы можете просматривать команды назад, введенные в этом сеансе. Поэтому, если вы выйдете из этого терминального сеанса, ваша история будет обновлена отсутствующей командой.
Также, если вы поставите пробел в начале строки перед командой, эта команда не будет сохранена в истории. Это хорошая практика, если вы запускаете команду, которую не хотите включать в историю.
Основные различия между содержимым файла истории (обычно это ~/.bash_history
) и текущей историей (которая доступна с помощью стрелок вверх и вниз и команды history
):
Другими словами:
history
и нажатием Enter < /kbd>. Однако команда history
, являющаяся встроенной оболочкой, имеет опции , которые изменяют это поведение. Вы можете явно указать оболочке для чтения или записи в файл истории. В частности, вы можете:
-a
) или вместо них (-w
) -n
) или все записей (-r
) в историю этой оболочки -c
) или просто удалить одну запись ( -d offset
) Для получения дополнительной информации:
help history
в оболочке Bash. На ваш вопрос дан ответ, но, кроме того, если вы хотите ввести данные в реальном времени в историю, вы вводите: history
ввод! Сразу после номера истории повторно выполнил команду в человеке На страницах вы найдете несколько хороших способов изменить свою команду перед выполнением.