What is the difference between ampersand and semicolon in Linux Bash?
For example,
$ command1 && command2
vs
command1 && command2 executes command2 if (and only if) command1 execution ends up successfully. In Unix jargon, that means exit code / return code equal to zero.
command1; command2 executes command2 after executing command1, sequentially. It does not matter whether the commands were successful or not.