APIキーやパスワードをターミナルで入力する際、コマンド履歴や画面出力に残らないようにする手法のまとめ。

read -s で隠し入力

read -s TOKEN_VAL

入力待ちになり、キー入力が画面に表示されない。Enterを押すと変数に代入される。コマンド履歴には変数名しか残らない。

入力後メモリの消去

unset TOKEN_VAL

使用後は変数を削除し、メモリからトークン値を消去する。

補足: セッション終了でも消える

シェル変数はシェルプロセスのメモリ上にあり、ターミナルを閉じれば消える。unset は「セッションを閉じない場合に後から envecho で値が確認できないようにする」役割。