Почему следует соблюдать осторожность при использовании встроенной функции истории команд 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выхода, когда закончите.

Ваше здоровье!

Связанный контент