2016-05-10 7 views
4

.bash_profileにスクリプトをロードします。このスクリプトは、ユーザーが端末ウィンドウを開くたびに適切なパスワードを要求します。ユーザーが間違ったコードを入力すると、スクリプトはexitを実行して現在の端末を停止します。スクリプトを停止し、端末を入力するC -ユーザがctrl-cを使用してスクリプトを停止するのを防ぐには?

if [ $code = "980425" ]; then 
    echo hello 
else 
    exit 
fi 

は、しかし、私は、ユーザーが常にCTRLを使用することができることを実現します。 これを避けるには?

+2

生のTTYストリームにフックする必要があります(標準ではありません)。 – argon

+0

@argonこれは、SIGINTを別のキーに移動するだけです。 ttyの設定を混乱させる必要はありません。トラップシェル組み込み関数はハンドラをインストールしたり、SIGINTを無視したりすることができます。 – Jens

+0

システムを真にセキュアにしようとしている場合は、認証に '.bash_profile'を使用しないでください。 –

答えて

6

あなたは、常にトラップSIGINTができます。

あなたが完了したら
trap 'echo got SIGINT' SIGINT 

、詳細についてはPOSIX spec for trapを参照してください

trap SIGINT 

で再びデフォルトのハンドラを再インストールします。これはbashだけでなく、すべてのBourneシェルで動作します。

+0

シグナルをトラップする方法について[Documentation](http://linuxcommand.org/wss0160.php) – JrBenito

+0

@JrBenitoありがとう!できます。とてもクール! –

関連する問題