Можно ли открыть сеанс инкогнито в bash
?
Например, когда нам нужно вводить пароли в командах и не хотим bash
добавлять их в историю.
bash
shell
command-history
privacy
Sudoer
источник
источник
cat | bash
будет работать неинтерактивноbash
без приглашения, редактирования из командной строки (только внутренний редактор дисциплины) или истории.secrectcommand
не будет в истории Bash.Ответы:
Если вы хотите
bash
прекратить запись ваших команд, просто удалитеHISTFILE
переменную:Все дальнейшие команды больше не должны регистрироваться
.bash_history
.С другой стороны, если вы фактически вводите пароли в качестве аргументов для команд, вы уже делаете что-то не так.
.bash_history
не является общедоступным и, следовательно, не самой большой угрозой в этой ситуации:ps
и/proc
являются большой проблемой. Все пользователи системы могут видеть команды, которые вы в данный момент выполняете, со всеми их аргументами . Поэтому передача паролей в качестве аргументов командной строки по своей сути небезопасна . Используйте переменные окружения или конфигурационные файлы (которые у вас есть chmodded 600) для безопасной подачи паролей.источник
unset HISTFILE
имеет аналогичный эффект. У меня есть функция для этого:n() { HISTFILE=; PS1="~${PS1#\~}"; }
. Таким образом, я ясно вижу, нахожусь ли я в «режиме инкогнито» или нет.Если эта опция еще не установлена
bash
, это может быть именно то, что вам нужно. Это менее изнурительно, чем отключение всей истории. С этим набором любая командная строка, начинающаяся с символа пробела, не будет сохранена в списке истории.Из этих ссылок:
Почему в bash есть опция HISTCONTROL = ignorespace?
Почему bash не хранит команды, начинающиеся с пробелов?
источник
Вы можете временно отключить историю:
set +o history
Существует разница между отключением истории и сбросом
HISTFILE
:выводит что-то вроде этого:
т.е. все команды сохраняются в списке истории. Типа,
exit
чтобы сохранить его.Но
выводит что-то вроде этого:
Резюме :
set +o history
для длительных сессий.HISTCONTROL
и<space>command
в другое время.источник