¿Por qué debe tener cuidado al utilizar la función de historial de comandos integrada de Bash para volver a ejecutar comandos anteriores que contienen variables?

¿Por qué debe tener cuidado al utilizar la función de historial de comandos integrada de Bash para volver a ejecutar comandos anteriores que contienen variables?

Sé que !!se vuelven a ejecutar comandos, pero ¿qué ocurriría exactamente si volviera a ejecutar un comando que tuviera una variable en el comando?

Respuesta1

Bueno, intentémoslo:

$ 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

Entonces parece que el comando se agrega al historial.antesse produce una expansión variable.

Respuesta2

Parece que algo de prueba y error podría resultar útil y proporcionarle un resultado muy rápidamente. Antes de hacer una pregunta, es bueno que pruebe estas cosas usted mismo. Como resultado, puede hacer preguntas informadas y detalladas :)

Como parece que eres bastante nuevo en esto, ¿quizás lo siguiente te resulte beneficioso?

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

Como puede ver, el historycomando funcionó como se esperaba. Al ejecutar 138 ejecutamos exactamente el mismo comando que ejecutamos la primera vez.

Consejo profesional: utilice el mancomando para leer más sobre un comando que le interese. Ex:

man history

y escriba Qpara salir cuando haya terminado.

¡Salud!

información relacionada