変数を含む古いコマンドを再実行するためにBashに組み込まれているコマンド履歴機能を使用するときは、なぜ注意する必要がありますか?

変数を含む古いコマンドを再実行するためにBashに組み込まれているコマンド履歴機能を使用するときは、なぜ注意する必要がありますか?

コマンドの再実行について知っていますが、!!変数を含むコマンドを再実行すると正確にはどうなりますか?

答え1

さて、一度試してみましょう:

$ foo=bar
$ echo $foo
bar
$ foo=qux
$ !-2
echo $foo
qux
$ history
...
  219  foo=bar
  220  echo $foo
  221  foo=qux
  222  echo $foo
  223  history

だからコマンドが履歴に追加されたようです今後変数拡張が発生しました。

答え2

試行錯誤を経ると便利で、非常に迅速に結果が得られるようです。質問する前に、これらのことを自分で試してみるのが最善です。詳細と詳細な質問をすることができます:)

あなたはこれに慣れていないようです。おそらく、次はあなたに役立ちます。

$ history -c
$ FOOD="Bananas"
$ echo $FOOD
Bananas
$ history
  137  FOOD="Bananas"
  138  echo $FOOD
  139  history
$ !138
echo $FOOD
Bananas

ご覧のとおり、コマンドhistoryは期待どおりに機能します。 138を実行することで、最初に実行したときとまったく同じコマンドを実行しました。

専門家のヒント:man興味のあるコマンドの詳細については、このコマンドを使用してください。前任者:

man history

Q完了したら、終了を入力します。

乾杯!

関連情報