Eu não sei o que está acontecendo com a sua montagem do sistema de arquivos, mas trabalhar é muito simples. Você só precisa entender o que a shebang está realmente fazendo.
Quando um arquivo é marcado como executável e você tenta executá-lo, os dois primeiros bytes do arquivo são verificados. Se eles forem #!
, o shell executará a primeira linha do seu arquivo como um comando, seguido pelo caminho para o próprio arquivo como um argumento para esse comando.
Em outras palavras, #!/bin/bash
, colocado como a primeira linha em um arquivo chamado /tmp/myscript.sh
, será executado como /bin/bash /tmp/myscript.sh
.
Da mesma forma, #!/usr/bin/awk -f
como a primeira linha de ./awkTest.awk
, quando executada, se torna (ou deve se tornar se o problema de montagem não estiver interferindo) /usr/bin/awk -f ./awkTest.awk
.
A solução é apenas executar awk -f awkTest.awk
e seu script será executado conforme o esperado.
Observe que, como awk
é interpretado em vez de compilado, um noexec
sinalizador nas opções de montagem do dispositivo que contém seu script awk não impede você de executar seu script. Isso só o impede de executá-lo como um executável . Portanto, tudo o que você precisa fazer é executar o executável binário awk
( /usr/bin/awk
) e ele lerá seu script awk
, o que obviamente não é impedido pelo sinal noexec
, e ele fará o que você escreveu.