Python e Bash são linguagens totalmente diferentes. O principal objetivo do Python é executar instruções internas com a capacidade adicional de executar programas externos. O principal objetivo do shell é executar programas externos, com algumas estruturas de controle e comandos internos adicionados. O Bash tem mais recursos internos do que o shell original, mas ainda mantém a compatibilidade.
Um dos recursos do shell é que você pode definir variáveis e expandi-las posteriormente em comandos. Basicamente, você pode pensar que o shell usa implicitamente algo como eval
do Python para cada instrução, embora haja diferenças, é claro.
Há também um comando eval
no shell que pode ser útil e perigoso se o nível normal de processamento e substituição não for suficiente e você precisar de um nível adicional. Ele avalia o restante da linha e alimenta o resultado para as substituições normais que o shell executa. Até que você tenha uma melhor compreensão e uma real necessidade disso, é melhor esquecer esse recurso.