為什麼在使用 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完成後鍵入退出。

乾杯!

相關內容