いくつかのスクリプトの概念を学ぶために、bash ラッパーを作成しています。アイデアは、bash でスクリプトを作成し、ログイン時にユーザーのシェルとして設定することです。
ユーザーの入力に対して while ループを作成したread
ところ、ユーザーが を入力するたびにスクリプトが中止され、ユーザー セッションが終了するeval
ことに気付きました。CTRL + C
これを避けるためSIGINT
に、トラップ内で何もせずに をトラップしました。
ここで、問題はCTRL + C
、コマンドの半分を入力しても、bash の場合のようにキャンセルされず、単に無視されることCTRL + C
です。
したがって、 と入力すると、必要な の代わりping stockoverf^Cping stackoverflow.com
に取得されます。ping stockoverfping stackoverflow.com
ping stackoverflow.com
それを行う方法はありますか?
#!/bin/bash
# let's trap SIGINT (CTRL + C)
trap "" SIGINT
while true
do
read -e -p "$USER - SHIELD: `pwd`> " command
history -s $command
eval $command
done