Shellコマンドの一部をログに記録せずに何かを暗号化して履歴をbashしたい。パスワード、ファイル名、またはコマンドをシェルの履歴に表示したくありません。 SHA2でAES256を使用してそれを行う方法は? (これが今日の最も秘密の構成だと思いますよね?)
$ unset HISTFILE
$ cat something | openssl enc -e -aes256 > encrypted-something
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:
履歴を一時的にオフにする最良の方法は、HISTSIZE
環境変数でサブシェルを開始することです。 0
に設定:
HISTSIZE=0 $0
type your commands here
<ctrl-D>
元のログインシェルへの履歴ログインは、サブシェルを終了した後も影響を受けませんのままです。
$0
は、使用しているのと同じシェルを開始することを保証します。 $0
を任意のシェルへのパスに置き換えることができます(例:/bin/sh
)。
これは、bash
、ksh
、zsh
、dash
を含む最も一般的なシェルで機能します。これはPOSIX標準だと思います。
exit
と入力して、サブシェルを終了することもできます。
$ true 1
$ true 2
$ HISTSIZE=0 $0
$ true 3
$ true 4
$ exit
$ history 4
500 true 1
501 true 2
502 HISTSIZE=0 $0
503 history 4
コマンドラインのファイル名が気になる場合は、ターミナルから読み取ることができます。
read infile; read outfile; cat $infile | openssl enc -e -aes256 > $outfile;