質問: 任意のコマンドに対して、プロンプトを使用してbashで機密データを渡す方法はありますか? コマンドラインでsha1passを使用して、機密性の高いパスワードのハッシュを生成するとします。 sha1pass mysecretを使用してmysecretのハッシュを生成できますが、これにはmysecretがbash履歴にあるという欠点があります。おそらくmysecretスタイルのプロンプトを使用することによって、passwdをプレーンテキストで表示しないようにしながら、このコマンドの最終目標を達成する方法はありますか?機密データをコマンドに渡すためにこれを行う一般的な方法にも興味があります。機密データが引数(sha1passなど)として渡されるか、stdinでコマンドに渡されると、メソッドが変更されます。これを達成する方法はありますか?編集:この質問は多くの注目を集め、以下にいくつかの良い答えが提供されています。要約は次のとおりです。 @ kusalanandaの回答 のとおり、理想的には、ユーティリティのコマンドライン引数としてパスワードやシークレットを指定する必要はないでしょう。これは、彼が説明したようにいくつかの点で脆弱です。stdinで秘密の入力を受け取ることができる、より優れた設計のユーティリティを使用する必要があります @ vfbsilva's answer は、bashの履歴に物が保存されないようにする方法を説明しています @ jonathanの回答 は、プログラムがstdinで秘密データを取得できる限り、これを達成するための完全に優れた方法を説明しています。そのため、この回答を受け入れることにしました。私のopのsha1passは単なる例でしたが、stdinでデータを取得するためのより優れたツールが存在することがディスカッションで確認されました。 @ r .. 注記 彼の答え のように、変数でのコマンド展開の使用は安全ではありません。 要約すると、私は @ jonathanの答え を受け入れました。それは、うまく機能するように設計され、適切に動作するプログラムがある場合、それが最良の解決策だからです。コマンドライン引数としてパスワードまたはシークレットを渡すことは基本的に安全ではありませんが、他の回答は単純なセキュリティ上の懸念を軽減する方法を提供します。
回答: histcontrolを次のように設定した場合:histcontrol=ignorespace スペースでコマンドを開始します:~$ mycommand 履歴には保存されません。