Você está perto.
Primeiro, a variável M4 precisa ser definida para o caminho do arquivo de programa M4 real, não para o diretório em que ela está. Provavelmente, um uso mais comum para essa variável do que o seu caso é selecionar vários programas M4 que já estão no PATH , então você precisa nomear o executável real. É comum em sistemas operacionais do tipo BSD ter a plataforma m4 e, em seguida, um programa GNU M4, talvez chamado gm4 , por exemplo. Você pode querer usar a versão GNU do M4 enquanto constrói o GNU Bison, e esta variável permite que você faça isso. O script, caso contrário, encontraria a versão do BSD primeiro, em nosso sistema de exemplo.
Em segundo lugar, acho que sua modificação PATH está sendo ignorada. A menos que você export o PATH , o novo valor estará disponível apenas para o shell. Você tem duas maneiras de corrigir isso:
export PATH=$HOME/local/flex/bin/:$PATH
ou:
PATH=$HOME/local/flex/bin/:$PATH ../configure --flags-and-stuff-here
A segunda versão faz a alteração apenas para o script configure . Qualquer programa que o script inicie não verá o PATH alterado, a menos que ele exporte o novo valor.
Pessoalmente, eu faria isso da primeira maneira em um de seus scripts de inicialização (por exemplo, ~/.bash_profile ), porque você também desejará a sua versão pessoal do Flex depois de instalar o Bison. Efetue logout, depois volte e tente executar flex para testá-lo. Se isso funcionar, o script Bison configure também deverá encontrar essa versão.